我有 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;
}
}
最佳答案
您可以通过两种方式做到这一点。
一是您可以使用 Primefaces RequestContext 从 ManagedBean 的 Action 方法本身关闭窗口。 。示例showcase
RequestContext.getCurrentInstance().execute("CLOSE_YOUR_WINDOW_HERE");
第二种方法是使用 RequestContext
的客户端回调(即 args
)检查验证是否失败。
oncomplete="(args && !args.validationFailed){CLOSE_YOUR_WINDOW_HERE}
"
请记住仅在 p:commandButton
的 oncomplete
中使用 args
。由于 args
将作为 AjaxCall 响应的一部分提供,因此在 onclick
中使用上述内容将/可能将 args
返回为 null
.
关于javascript - 如何在关闭窗口之前检查必填字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29738536/