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()とメソッドを呼び出すだけで値を取得できますusuario.getSenha()showAlert変数をmanagedBeanに入れてから、jsfページで次の<h:outputScript>ようなタグを使用できます。

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

これがお役に立てば幸いです。

于 2013-03-16T17:58:51.800 に答える