我正在登录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;
}
}
}
谢谢你的帮助,我真的没有看到代码上的任何错误
答案 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)
您需要按照以下
更改一些代码我的意思是
@ManagedBean(name="utilisateursController") instead of @ManagedBean(name="UtilisateursController")
希望你能解决问题!