2014-09-04 79 views
0

我试图获得ManagedBean的返回。我有一个对话框来登录用户,我在managedbean上有一个方法来检查用户是否存在。如果用户存在,则返回true,否则返回false。打开p:对话框中的动作侦听器方法

我想如果用户存在对话框隐藏,如果不是对话框显示。

我该怎么做?

XHTML

<h:form id="UsuarioLoginForm"> 
    <p:growl id="growl" life="3000"/> 
     <p:panelGrid columns="2" id="display"> 

      <p:outputLabel value="Login"/> 
        <p:inputText 
          required="true" 
          value="#{usuarioMB.bean.login}"        
          maxlength="50"        
          onkeyup="strToUpper(this)" 
          /> 

      <p:outputLabel value="Senha"/> 
        <p:password 
          required="true" 
          value="#{usuarioMB.bean.senha}"        
          maxlength="12"        
          onkeyup="strToLower(this)" 
          /> 

      <p:commandButton value="Login" 
          actionListener="#{usuarioMB.isLoginExiste(usuarioMB.bean)}" 
          > 
       <f:ajax execute="@form" render="@form"/> 
      </p:commandButton> 

     </p:panelGrid> 
    </h:form> 
</p:dialog> 

Managed Bean的

/** check if login exist */ 
    public Boolean isLoginExiste(Usuario u){ 
     if(new CustomUsuarioDAO().isLoginExiste(u.getLogin(), u.getSenha())){ 
      return true; 
     }else{ 
      return false; 
     } 
    } 


    } 
+1

请发表您的答案对于答案部分的问题,而不是问题本身。您可以将其标记为已回答。 – 2014-09-04 19:27:58

回答

0

解决

/** check if login exist */ 
    public void isLoginExiste(){   
     RequestContext rctx = RequestContext.getCurrentInstance(); 
     boolean existe = new CustomUsuarioDAO().isLoginExiste(getLogin(), getSenha());  
     if(existe){ 
      rctx.execute("UsuarioLoginDialog.hide()"); 
     }else{ 
      FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro","Usuário ou senha inválido")); 
      rctx.update("UsuarioLoginForm:growl"); 
      rctx.execute("UsuarioLoginDialog.show()");   
     }  
    }