登录jsf hibernate按钮登录不应答

登录jsf hibernate按钮登录不应答,jsf,Jsf,我正在开发一个登录jsf和hibernate应用程序,我遇到了一个问题,当我点击登录按钮时什么也没发生 <h:head></h:head> <body> <h:form> <h:outputText value="#{accountController.message}" escape="false"> </h:outputText> </h:form> <h:panelGrid col

我正在开发一个登录jsf和hibernate应用程序,我遇到了一个问题,当我点击登录按钮时什么也没发生

<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>
利用URSModel.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;
        }

      } 
     }
包模型;
导入org.hibernate.Query;
导入org.hibernate.resource.transaction.spi.TransactionStatus;
进口实体。*;
公共类UsilizateUrsModel扩展了AbstractModel{
公共利用模型(){
超级(用户级);
}
公共用户登录(字符串用户名、字符串密码){
试一试{
if(!(sessionFactory.getCurrentSession().getTransaction().getStatus()!=TransactionStatus.ACTIVE))
sessionFactory.getCurrentSession().getTransaction().begin();
Query=sessionFactory
.getCurrentSession()
.createQuery(
“来自用户,其中用户名=:用户名和密码=:密码”);
query.setString(“用户名”,username);
query.setString(“密码”,password);
return(usilizateurs)query.uniqueResult();
}捕获(例外e){
返回null;
}
} 
}

感谢您的帮助,我真的没有发现代码有任何错误

当命令按钮位于窗体外部时,您无法执行操作。将代码更改为以下内容:

<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>


希望这对你有用

您需要根据以下内容更改一些代码

  • 您需要像所有输入和输出一样将所有元素放入表单体中 提交按钮
  • 您需要更改ManageBean名称 利用率控制器而不是利用率控制器
  • 我是说

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

    希望你能解决你的问题

    将您的commandButton放入
    中。当按钮位于表单标记中时,将触发操作。欢迎使用堆栈溢出!在发布关于JSF的未来问题之前,请确保您已阅读。当前问题的当前形式包含许多与实际问题无关的代码。尝试解决这个问题。谢谢,我解决了登录按钮的问题,但是当我执行时,即使我输入了正确的登录名和密码,我总是会收到“帐户无效”的消息!!请调试您的代码并使用managebean登录方法进行检查您获得了正确的用户名和密码,并在检查数据库时添加了带有用户名和密码的trim()。您能否解释更多,与数据库的连接正常,登录代码tooi反复编写并检查了代码,同样的问题
    @ManagedBean(name="utilisateursController") instead of @ManagedBean(name="UtilisateursController")