2

好吧,在我的课堂上 Bean

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而不是想法:\

4

2 回答 2

4

您应该将值传递到您的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()and即可获取值。usuario.getSenha()您将showAlert变量放在 managedBean 中,然后在 jsf 页面中,您可以<h:outputScript>像这样使用标签:

 <h:outputScript rendered="#{beanUsuario.showAlert}">
   alert("Invalid login");
</h:outputScript>

希望这对你有帮助!

于 2013-03-16T17:58:51.800 回答
1

如果你在 xhtml 页面中有一个对话框,如果你想显示只使用的对话框,那就太好了。

RequestContext requestContext = RequestContext.getCurrentInstance();
requestContext.execute(“dialog.show()”);

& 如果你想重定向然后使用 Facescontext redirect("URL") 方法。

希望它会帮助你。

于 2013-07-29T12:06:44.800 回答