2016-04-03 78 views
0

IM上的登錄JSF工作和休眠應用程序,我有一個問題,煥我點擊登錄按鈕沒有反應登錄JSF休眠按鈕登錄沒有按牛逼回答

<h:head></h:head> 
<body> 
<h:form> 
<h:outputText value="#{accountController.message}" escape="false">  </h:outputText> 
    </h:form> 
    <h:panelGrid columns ="2" cellpadding="2" cellpacing="2"> 

     <h:outputText value="Username"></h:outputText> 
    < h:inputText value="#{utilisateursController.utilisateurs.username}"> </h:inputText> 

    <h:outputText value="Password"></h:outputText> 
    <h:inputSecret value="#{utilisateursController.utilisateurs.password}"></h:inputSecret> 

<h:commandButton value = "login" action="#{utilisateursController.login()}" ></h:commandButton> 

UtilisateursController.java

package controller; 

import javax.faces.bean.*; 
import entities.*; 
import model.UtilisateursModel; 

    import java.util.*; 

@ManagedBean(name="UtilisateursController") 
@SessionScoped 
    public class UtilisateursController { 

    private UtilisateursModel utilisateursModel = new UtilisateursModel(); 
    private Utilisateurs utilisateurs = new Utilisateurs(); 
    private String message = ""; 



    public String getMessage() { 
    return message; 
} 
    public void setMessage(String message) { 
    this.message = message; 
    } 
    public Utilisateurs getUtilisateurs() { 
    return utilisateurs; 
    } 
     public void setUtilisateurs(Utilisateurs utilisateurs) { 
     this.utilisateurs = utilisateurs; 
    } 

     public String login(){ 
     if(utilisateursModel.login(this.utilisateurs.getUsername(), 
      this.utilisateurs.getPassword())!=null){ 

     return "welcome"; 
     } else { 
     this.message = "Utilisateur invalid"; 
     this.utilisateurs = new Utilisateurs(); 
     return "login"; 
     } 
      } 
      } 

UtilisateursMo del.java

package model; 

     import org.hibernate.Query; 
    import org.hibernate.resource.transaction.spi.TransactionStatus; 

    import entities.*; 

    public class UtilisateursModel extends AbstractModel<Utilisateurs>{ 

    public UtilisateursModel(){ 
     super(Utilisateurs.class); 
     } 


     public Utilisateurs login(String username, String password){ 
      try{ 

     if (!(sessionFactory.getCurrentSession().getTransaction().getStatus() != TransactionStatus.ACTIVE)) 
     sessionFactory.getCurrentSession().getTransaction().begin(); 


      Query query = sessionFactory 
       .getCurrentSession() 
       .createQuery(
      "from utilisateurs where username=:username and  password=:password"); 
      query.setString("username", username); 
      query.setString("password", password); 
      return (Utilisateurs)query.uniqueResult(); 
      } catch(Exception e){ 
      return null; 
     } 

     } 
    } 

感謝你的幫助,我真不看不到任何錯誤的代碼

+0

把你的commandButton放在裏面''.action會在表單標籤裏面按鈕時觸發。 –

+0

歡迎來到Stack Overflow!在發佈有關JSF的未來問題之前,請確保您已閱讀http://stackoverflow.com/tags/jsf/info。目前形式的當前問題包含許多不相關的代碼,不會對實際問題做出貢獻。嘗試着解決這個問題。 – BalusC

回答

-1

當命令按鈕是一個形式之外時,不能執行一個動作。將您的代碼更改爲以下內容:

<h:form> 
<h:outputText value="#{accountController.message}" escape="false">  </h:outputText> 
<h:panelGrid columns ="2" cellpadding="2" cellpacing="2"> 
    <h:outputText value="Username"></h:outputText> 
    <h:inputText value="#{utilisateursController.utilisateurs.username}"/> 
    <h:outputText value="Password"/> 
    <h:inputSecret value="#{utilisateursController.utilisateurs.password}"/> 
    <h:commandButton value = "login" action="#{utilisateursController.login()}" /> 
</h:panelGrid> 
</h:form> 

希望能爲您解決這個問題!

-1

你需要改變一些代碼按以下

  1. 你需要把所有的元素形式體內像所有的輸入和 提交按鈕
  2. 你需要改變你的管理bean的名字 utilisateursController而不是UtilisateursController

我的意思是

@ManagedBean(name="utilisateursController") instead of @ManagedBean(name="UtilisateursController") 

希望你能解決你的問題!

+0

謝謝,我解決了登錄按鈕問題,但是當我執行時,即使當我把正確的登錄名和密碼,我總是「帳戶無效」的消息! – usra

+0

請調試您的代碼並使用managebean登錄方法檢查您的用戶名和密碼,並在使用數據庫檢查時添加** trim()**以及用戶名和密碼。 –

+0

你能多解釋一下,與數據庫的連接是否正常,登錄碼太 – usra