我有JSF页面,我想创建保存和关闭按钮,但是如果用户不输入要保留的所有必填字段。 所以这将完全符合我的要求,但它不会关闭窗口。
<h:commandLink action="#{projectsControllerCreate.create}"
value="#{bundle.CreateProjectsSaveLink}" />
这将关闭窗口,而不是输入的内容。
<p:commandButton action="#{projectsControllerCreate.create}"
value="#{bundle.CreateProjectsSaveLink}"
onclick="window.close()"/>
我已将JS Exit()添加到按钮但它不起作用?
function Exit() {
var x = #{projectsControllerCreate.selected.projectName.length()
}
if (x > 0) {
window.close();
}
}
<p:commandButton action="#{projectsControllerCreate.create}"
value="#{bundle.CreateProjectsSaveLink}"
onclick="Exit()" />
如果一切正常并且发送window.close();
命令,我可以检查创建吗?
public String create() {
try {
getFacade().create(current);
JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("ProjectsCreated"));
return prepareCreate();
} catch (Exception e) {
JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
return null;
}
}
答案 0 :(得分:1)
你可以用两种方式做到这一点 一个是你可以使用Primefaces RequestContext从ManagedBean的Action方法本身关闭窗口。示例showcase
RequestContext.getCurrentInstance().execute("CLOSE_YOUR_WINDOW_HERE");
第二种方法是使用RequestContext
args
的客户端回调来检查验证是否失败。
oncomplete="(args && !args.validationFailed){CLOSE_YOUR_WINDOW_HERE}
&#34;
请务必仅在args
的{{1}}中使用oncomplete
。由于p:commandButton
将作为AjaxCall响应的一部分提供,因此在args
中使用上方/可能会onclick
作为args
返回。