登录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;
}
}
}
感谢你的帮助,我真不看不到任何错误的代码
答
当命令按钮是一个形式之外时,不能执行一个动作。将您的代码更改为以下内容:
<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>
希望能为您解决这个问题!
答
你需要改变一些代码按以下
- 你需要把所有的元素形式体内像所有的输入和 提交按钮
- 你需要改变你的管理bean的名字 utilisateursController而不是UtilisateursController
我的意思是
@ManagedBean(name="utilisateursController") instead of @ManagedBean(name="UtilisateursController")
希望你能解决你的问题!
把你的commandButton放在里面'
'.action会在表单标签里面按钮时触发。 –欢迎来到Stack Overflow!在发布有关JSF的未来问题之前,请确保您已阅读http://*.com/tags/jsf/info。目前形式的当前问题包含许多不相关的代码,不会对实际问题做出贡献。尝试着解决这个问题。 – BalusC