仅当验证成功时如何执行 a4j:commandLink oncomplete?

Posted

技术标签:

【中文标题】仅当验证成功时如何执行 a4j:commandLink oncomplete?【英文标题】:How to execute a4j:commandLink oncomplete only when validation has succeed? 【发布时间】:2012-06-02 11:50:03 【问题描述】:

我正在使用 JSF2、Richfaces4 和 Spring。我有一个命令链接。在执行时我保存记录并在完成时执行搜索以显示如下代码所示的记录。 问题是 oncomplete 中的fireSearch() 会执行,即使表单中存在验证错误。只有当记录保存成功时,我才需要执行fireSearch()

如何才能在验证成功后才完成?

<a4j:commandLink styleClass="button" action="#myBean.save" render="detail_form" execute="@form" oncomplete="fireSearch()">
<span> Save </span>
</a4j:commandLink>

【问题讨论】:

【参考方案1】:

RichFaces 在 oncomplete 属性中支持基于请求的 EL 评估。所以你应该可以打印FacesContext#isValidationFailed(),就好像它是一个JS条件一样。

例如,

oncomplete="if (#!facesContext.validationFailed) fireSearch()"

如果验证失败,这最终会导致

oncomplete="if (false) fireSearch()"

因此该函数不会被调用。

【讨论】:

以上是关于仅当验证成功时如何执行 a4j:commandLink oncomplete?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决反应身份验证中的未捕获(承诺中)TypeError?

仅当用户在 Laravel 5.7 中处于活动状态时才登录用户

如何在微服务中跨服务执行验证

仅当在 Java 中按下鼠标时如何让 mouseEntered 执行

仅当用户单击 [重复] 时如何执行 JS 文件

仅当行不存在时,如何在 SQL Server 中执行插入操作? [复制]