在jsf 2.2 primefaces应用程序中,我有一个链接打开一个包含表单的对话框。在提交表单时,我想关闭对话框并重新加载当前页面或在对话框本身上显示错误。
managedbean方法是一个void方法,它使用RequestContext设置状态 - addcallbackparam。
由于使用actionlistener进行对话框提交,并且操作的其余部分在javascript中发生,我无法完全解决这个问题。
我按照primefaces网站上提供的示例。
https://www.primefaces.org/showcase/ui/overlay/dialog/loginDemo.xhtml
任何人都可以提供任何信息。
答案 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" />