仅当验证成功时如何执行 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 中处于活动状态时才登录用户