连接失败时无法重试登录

时间:2014-06-10 11:58:33

标签: hibernate jsf authentication primefaces login

我正在登录页面上工作,当我尝试连接时,信息正确或错误都可以正常工作。它给了我正确的信息,但如果我连接错误的用户名或密码。我无法再次尝试登录。 这是我的代码。

login.xhtml

<?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:p="http://primefaces.org/ui"
      xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
    <h:head>
        <title>Facelet Title</title>
        <link href="http://localhost:8084/jsf/resources/css/login.css" type="text/css" rel="stylesheet"/>
    </h:head>
    <h:body>
        <div class="container">
        <h:form id="formLogin">            

    <p:growl id="growl" sticky="true" showDetail="true" life="3000" />
    <p:panel header="Login">
        <h:panelGrid columns="2" cellpadding="5">
            <h:outputLabel for="username" value="Username:" />
            <p:inputText id="username" value="#{utilisateurBean.utilisateur.username}" required="true" label="username" />

            <h:outputLabel for="password" value="Password:" />
            <p:password id="password" value="#{utilisateurBean.utilisateur.password}" required="true" label="password" />

            <f:facet name="footer">
                <p:commandButton value="Login" update="growl" actionListener="#{utilisateurBean.login(actionEvent)}" 
                                 oncomplete="handleLoginRequest(xhr, status, args)" />
            </f:facet>  
        </h:panelGrid>
    </p:panel>
</h:form>
        </div>
<script type="text/javascript">
    function handleLoginRequest(xhr, status, args) {
        if(args.validationFailed || !args.loggedIn) {
            PF('#formLogin').jq.effect("shake", {times:5}, 100);
        }
        else {
            location.href = args.route;
        }
    }
</script>
    </h:body>
</html>

UtilisateurBean.java

package controller;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import model.services.UtilisateurMetier;
import model.services.UtilisateurMetierImpl;
import net.vo.Utilisateur;
import org.primefaces.context.RequestContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

@Component
@Scope("view")
public class UtilisateurBean{

    private Utilisateur utilisateur;
    @Autowired
    private UtilisateurMetier utilisateurMetier;
    String route = "";
    public UtilisateurBean() {
        this.utilisateurMetier = new UtilisateurMetierImpl();
        if(this.utilisateur == null)
        {
            this.utilisateur = new Utilisateur();
        }
    }

    public Utilisateur getUtilisateur() {
        return utilisateur;
    }

    public void setUtilisateur(Utilisateur utilisateur) {
        this.utilisateur = utilisateur;
    }

    public void login(ActionEvent actionEvent)
    {    
        RequestContext context = RequestContext.getCurrentInstance();
        FacesMessage msg;
        boolean loggedIn;

        this.utilisateur = this.utilisateurMetier.verify(this.utilisateur);
        if (this.utilisateur != null)
        {
            loggedIn = true;
            FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("utilisateur", this.utilisateur.getUsername());
            msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Welcome", this.utilisateur.getUsername());
            route ="/jsf/faces/index.xhtml";
            System.out.println(this.utilisateur.getUsername());
        } else {
            loggedIn = false;
            msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Login Error", "Invalid mot de passe");
            if(this.utilisateur == null)
            {
                this.utilisateur = new Utilisateur();
            }
        }
        FacesContext.getCurrentInstance().addMessage(null, msg);
        context.addCallbackParam("loggedIn", loggedIn);
        context.addCallbackParam("route", route);
    }

}

0 个答案:

没有答案