p:对话框显示消息或重新加载

时间:2018-03-09 02:36:48

标签: primefaces jsf-2.2

在jsf 2.2 primefaces应用程序中,我有一个链接打开一个包含表单的对话框。在提交表单时,我想关闭对话框并重新加载当前页面或在对话框本身上显示错误。

managedbean方法是一个void方法,它使用RequestContext设置状态 - addcallbackparam。

由于使用actionlistener进行对话框提交,并且操作的其余部分在javascript中发生,我无法完全解决这个问题。

我按照primefaces网站上提供的示例。

https://www.primefaces.org/showcase/ui/overlay/dialog/loginDemo.xhtml

任何人都可以提供任何信息。

1 个答案:

答案 0 :(得分:0)

您可以尝试不使用addcallbackparam和javascript ..

验证成功后,隐藏对话框&重新加载页面或失败时,从托管bean设置如下警告消息:

public void login(ActionEvent event) {    
    if(username != null && username.equals("admin") && password != null && password.equals("admin")) {
        RequestContext requestContext = RequestContext.getCurrentInstance();
        requestContext.execute("PF('dlg').hide()");
        pageReload();
    } else {
        dialogWarning = "Validation failed";
    }
}

public void pageReload() {
    ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
    try {
        ec.redirect(((HttpServletRequest) ec.getRequest()).getRequestURI());
    } catch (IOException ex) {
        //catch and log IO exception here
    }
}

在xhtml对话框中设置dynamic = true并显示如下警告消息,并将此id添加到Login组件中的update属性。

<h:outputLabel id="warnMsgLabel" value="#userLoginView.dialogWarning" />