登录JSF休眠按钮登录没有按牛逼回答

登录JSF休眠按钮登录没有按牛逼回答

问题描述:

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://*.com/tags/jsf/info。目前形式的当前问题包含许多不相关的代码,不会对实际问题做出贡献。尝试着解决这个问题。 – BalusC

当命令按钮是一个形式之外时,不能执行一个动作。将您的代码更改为以下内容:

<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. 你需要把所有的元素形式体内像所有的输入和 提交按钮
  2. 你需要改变你的管理bean的名字 utilisateursController而不是UtilisateursController

我的意思是

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

希望你能解决你的问题!

+0

谢谢,我解决了登录按钮问题,但是当我执行时,即使当我把正确的登录名和密码,我总是“帐户无效”的消息! – usra

+0

请调试您的代码并使用managebean登录方法检查您的用户名和密码,并在使用数据库检查时添加** trim()**以及用户名和密码。 –

+0

你能多解释一下,与数据库的连接是否正常,登录码太 – usra