登录jsf hibernate按钮登录没有回答

时间:2016-04-03 22:30:49

标签: jsf

我正在登录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>

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"; 
         }
          } 
           }

UtilisateursModel.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;
        }

      } 
     }

谢谢你的帮助,我真的没有看到代码上的任何错误

2 个答案:

答案 0 :(得分:-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)

您需要按照以下

更改一些代码
  1. 您需要将所有元素放在表单体内,就像所有输入一样 提交按钮
  2. 您需要更改您的管理bean名称 utilisateursController 而不是 UtilisateursController
  3. 我的意思是

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

    希望你能解决问题!