好吧,在我班上

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>


希望这对您有所帮助!

07-26 01:40