在动作侦听器方法中打开p:对话框

时间:2014-09-04 16:26:54

标签: jsf primefaces dialog action

我正在尝试返回我的ManagedBean。我有一个登录用户的对话框,我在managedbean上有一个检查用户是否存在的方法。如果用户存在,则返回true,如果不返回false。

如果没有显示对话框,我希望如果用户存在对话框是隐藏的。

我怎么能这样做?

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>

托管Bean

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


    }

1 个答案:

答案 0 :(得分: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()");          
        }       
    }