JSF Bean funktioniert nicht immer..

fanavity

Mitglied
Hallo,

ich habe mir ein LoginBean - Tutorial angesehen. Dieses habe ich nun auch nachgebaut. Als Framework nutze ich Primefaces 5 und Primefaces-Mobile 1.0

Die Loginmaske klappt problemlos. Auch das registrieren. Allerdings kann ich mich nicht mehr ausloggen. Das hat schonmal geklappt, aber irgendwie will es nicht mehr.

Ich muss dazu sagen, dass dies meine Anfänge in dem Bereich sind.. Hier mal die verwendeten Klassen/xhtml


Login:
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:p="http://primefaces.org/ui"
	xmlns:pm="http://primefaces.org/mobile">

<h:head>
	<title>Login</title>
	<h:outputStylesheet name="style.css" />
</h:head>
<h:body>
	<pm:page>
		<h:form id="loginform">
			<p:growl id="msg" showDetail="true" life="9000" />
			<p:panel header="Login" id="loginHeader">
				<p:panelGrid id="loginPanel" styleClass="loginGrid">

					<h:outputText value="Benutzername" />

					<p:inputText id="username" value="#{loginBean.username}"
						required="true"
						requiredMessage="Der Benutzername ist ein Pflichtfeld."
						styleClass="loginGridUsername" />

					<p:message for="username" />


					<h:outputText value="Passwort" />

					<p:password id="password" value="#{loginBean.password}"
						feedback="false" required="true"
						requiredMessage="Das Passwort ist ein Pflichtfeld." />

					<p:message for="password" />
					<p:spacer />
					<p:commandButton id="button" value="Einloggen"
						action="#{loginBean.doLogin}" update="msg" />

					<p:spacer />

					<p:commandButton id="register" action="#{loginBean.doRegister()}"
						value="registrieren" />
				</p:panelGrid>
			</p:panel>
		</h:form>
	</pm:page>
</h:body>
</html>

Welcome
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:p="http://primefaces.org/ui"
	xmlns:pm="http://primefaces.org/mobile"
	xmlns:pt="http://xmlns.jcp.org/jsf/passthrough">

<h:head>
	<h:outputStylesheet name="style.css" />
</h:head>

<h:body>
	<pm:page id="navi">
		<pm:header title="Hallo #{loginBean.username} - Herzlich willkommen" swatch="b" id="logOutHeader">
			<p:commandButton value="Logout" action="#{loginBean.doLogout()}"
				id="logoutButton"/>
		</pm:header>
		<p:panel header="Menü" id="menuPanel">
			<p:menu>
				<p:submenu label="Transaktionen">
					<p:menuitem value="Alle anzeigen"
						outcome="pm:allTransactions?transition=flip" />
				</p:submenu>
				<p:submenu label="Gruppen">
					<p:menuitem value="Alle anzeigen"
						outcome="pm:allGroups?transition=flip" />
				</p:submenu>
				<p:submenu label="Kategorien">
					<p:menuitem value="Alle anzeigen"
						outcome="pm:allCategories?transition=flip" />
				</p:submenu>
				<p:submenu label="Statistik">
					<p:menuitem value="Alle anzeigen"
						outcome="pm:statistik?transition=flip" />
				</p:submenu>
			</p:menu>
		</p:panel>
	</pm:page>

	<pm:page id="allTransactions">
		<pm:header title="Alle Transaktionen" swatch="b" id="logOutHeaderTransaction">
			<p:button outcome="pm:navi?transition=flip" value="Zurück" id="backButtonTransaction" styleClass="button"/>
			<p:commandButton id="addTransactionButton" value="Hinzufügen" styleClass="button"/>
		</pm:header>
	</pm:page>

	<pm:page id="allGroups">
		<pm:header title="Alle Gruppen" swatch="b" id="logOutHeaderGroup">
			<p:button outcome="pm:navi?transition=flip" value="Zurück" id="backButtonGroup" styleClass="button"/>
			<p:commandButton id="addGroupButton" value="Hinzufügen" styleClass="button"/>
		</pm:header>
	</pm:page>

	<pm:page id="allCategories">
		<pm:header title="Alle Kategorien" swatch="b" id="logOutHeaderCategorie">
			<p:button outcome="pm:navi?transition=flip" value="Zurück" id="backButtonCategorie" styleClass="button"/>
			<p:commandButton id="addCategorieButton" value="Hinzufügen" styleClass="button"/>
		</pm:header>
	</pm:page>

	<pm:page id="statistik">
		<pm:header title="Statistik" swatch="b" id="logOutHeaderStatistik">
			<p:button outcome="pm:navi?transition=flip" value="Zurück" id="backButtonStatistik" styleClass="button"/>
		</pm:header>
	</pm:page>
</h:body>
</html>

und das LoginBean:
Java:
package de.fanavity.webservice.web.homepage.bean;

import java.io.Serializable;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import de.fanavity.webservice.datenbank.BankDao;
import de.fanavity.webservice.web.pojo.User;
import de.fanavity.webservice.web.server.BankApi;
import de.fanavity.webservice.ws.impl.callback.ResultinfoCallback;

@ManagedBean(name = "loginBean")
@SessionScoped
public class LoginBean implements Serializable {
 
    private static final long serialVersionUID = 7765876811740798583L;
 
    // Simple user database :)
    private String username;
    private String password;
     
    private boolean loggedIn;
 
    @ManagedProperty(value="#{navigationBean}")
    private NavigationBean navigationBean;
     
    /**
     * Login operation.
     * @return
     */
    public String doLogin() {
        // Get every user from our sample database :)
        if( username != null && password != null
        		&& !username.equals("")
        		&& !password.equals("")) {
            BankDao dao = new BankDao();
            BankApi api = new BankApi(dao);
            ResultinfoCallback callback = new ResultinfoCallback();
            User user = api.logon(username, password, callback);
            // Successful login
            if ( user.username != null && user.password != null 
            		&& !user.username.equals("") 
            		&& !user.password.equals("")
            		&& api.checkPassword(user, password, callback)) {
            	loggedIn = true;
                return navigationBean.redirectToWelcome();
            }
        }
        // Set login ERROR
        // TODO -> Fehlermeldung
        FacesMessage msg = new FacesMessage("Fehler beim Einloggen!", "Fehlermeldung aus dem UserObjekt");
        msg.setSeverity(FacesMessage.SEVERITY_ERROR);
        FacesContext.getCurrentInstance().addMessage(null, msg);
         
        // To to login page
        return navigationBean.toLogin();
    }
     
    /**
     * Logout operation.
     * @return
     */
    public String doLogout() {
        // Set the paremeter indicating that user is logged in to false
        loggedIn = false;
         
        // Set logout message
        FacesMessage msg = new FacesMessage("Erfolgreich ausgeloggt!", "Sie wurden erfolgreich ausgeloggt");
        msg.setSeverity(FacesMessage.SEVERITY_INFO);
        FacesContext.getCurrentInstance().addMessage(null, msg);
         
        return navigationBean.toLogin();
    }
    
    public String doRegister() {
    	ResultinfoCallback callback = new ResultinfoCallback();
        if( username != null && password != null
        		&& !username.equals("")
        		&& !password.equals("")) {
            BankDao dao = new BankDao();
            BankApi api = new BankApi(dao);
            User user = new User();
            
            user.password = password;
            user.username = username;
            
            user = api.registerUser(user, callback);
            if ( user.username != null && user.password != null ) {
            	loggedIn = true;
                return navigationBean.redirectToWelcome();
            }
        }
        FacesMessage msg = new FacesMessage("Fehler beim registrieren!", callback.getMeldungForMessagebox());
        msg.setSeverity(FacesMessage.SEVERITY_ERROR);
        FacesContext.getCurrentInstance().addMessage(null, msg);
         
        // To to login page
        return navigationBean.register();
    }
 
    // ------------------------------
    // Getters & Setters
     
    public String getUsername() {
        return username;
    }
 
    public void setUsername(String username) {
        this.username = username;
    }
 
    public String getPassword() {
        return password;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
 
    public boolean isLoggedIn() {
        return loggedIn;
    }
 
    public void setLoggedIn(boolean loggedIn) {
        this.loggedIn = loggedIn;
    }
 
    public void setNavigationBean(NavigationBean navigationBean) {
        this.navigationBean = navigationBean;
    }
}

Es gibt weder eine Exception noch sonst irgendeine reaktion. Es kommt ganz kurz der Ajax spinner und das wars. Das Bean scheint da zu sein, da ich Benutzername und Passwort auslesen und auf der Seite anzeigen kann.

Habe ich etwas übersehen ?
 

Neue Themen


Zurück
Oben