好吧,在我班上
package bean;
import entidade.Usuario;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
/**
*
* @author muky
*/
@ManagedBean
@ViewScoped
public class BeanUsuario {
private Usuario usuario;
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
@PostConstruct
public void BeanUsuario() {
if (usuario == null) {
usuario = new Usuario();
}
}
public void verificarUsuario(String login, String senha) {
//UsuarioJpaController usuarioJPA = new UsuarioJpaController();
//usuarioJPA.getEntityManager().createNamedQuery("Usuario.findByLoginSenha").setParameter("login", login).setParameter("senha", senha).getResultList();
}
}
我的XHTML
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form id="usuario" prependId="false">
<h:panelGrid columns="4" cellpadding="5" style="">
<h:outputLabel for="login" value="Login:" style="font-weight:bold"/>
<p:inputText id="login" value="#{beanUsuario.usuario.login}" />
<h:outputLabel for="senha" value="Senha:" style="font-weight:bold"/>
<p:inputText id="senha" value="#{beanUsuario.usuario.senha}" />
<p:commandButton value="Entrar" ajax="false" actionListener="#{beanUsuario.verificarUsuario(login, senha)}"/>
</h:panelGrid>
</h:form>
</h:body>
</html>
我需要检查登录名和密码(senha)是否正确,如果是,它们将被重定向到其他页面,否则会出现一个警告框,拒绝访问!我正在启动javaweb,而不是主意:
最佳答案
您应该像下面这样将值传递到您的beanUsuario.verificarUsuario
方法中(如果您确实需要):
#{beanUsuario.verificarUsuario(beanUsuario.usuario.login, beanUsuario.usuario.senha)}"
但是我认为您确实不需要在
verificarUsuario
方法中传递参数,因为您将输入文本的值绑定到ManagedBean属性usuario
。因此,您可以简单地编写方法:public void verificarUsuario() {
//UsuarioJpaController usuarioJPA = new UsuarioJpaController();
usuarioJPA.getEntityManager().createNamedQuery("Usuario.findByLoginSenha").setParameter("login", usuario.getLogin()).setParameter("senha", usuario.getSenha()).getResultList();
if(canLogin){ //canLogin is the condition to check whether can login or not
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
ec.redirect(ec.getRequestContextPath() + "/home.xhtml");
}
else{
showAlert = true;
}
}
您只需在方法中调用
usuario.getLogin()
和usuario.getSenha()
即可获取值。您将showAlert
变量放入managedBean中,然后在jsf页面中可以使用<h:outputScript>
标记,如下所示: <h:outputScript rendered="#{beanUsuario.showAlert}">
alert("Invalid login");
</h:outputScript>
希望这对您有所帮助!