javascript - 如何在关闭窗口之前检查必填字段?

标签 javascript jsf primefaces

我有 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:commandButtononcomplete 中使用 args。由于 args 将作为 AjaxCall 响应的一部分提供,因此在 onclick 中使用上述内容将/可能将 args 返回为 null.

关于javascript - 如何在关闭窗口之前检查必填字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29738536/

相关文章:

java - 如何使用 Rhino 和 Eclipse 从 JavaScript 访问外部 JAR 文件?

javascript - 事件监听器,在定义 jQuery 时发出警报

java - JSF selectOneRadio 函数返回值作为 itemValue。 For 循环创建 selectItems

css - 在我的 View XHTML 中包含 CSS

java - 从 HtmlTable 中多次调用 JSF actionListener

jsf - 从 bean 将 facet 添加到 primefaces 面板

javascript - 让 Enter 键不创建换行符

javascript - For 循环取决于数字输入

不带按钮的 JSF 显示图标

java - JSF <p :inputText> not updating after validation