如何在 PrimeFaces oncomplete 中触发 args.validationFailed
Posted
技术标签:
【中文标题】如何在 PrimeFaces oncomplete 中触发 args.validationFailed【英文标题】:How to trigger args.validationFailed in PrimeFaces oncomplete 【发布时间】:2013-01-02 07:47:13 【问题描述】:当按下Save
按钮时,应该验证来自actionsDialog 的数据。如果所需信息已输入且有效,则会显示名为 reasonDialog 的第二个对话框。
已保存对象的非 JSF 验证是通过返回错误消息列表的方法完成的。如果验证失败,错误消息将与 FacesMessage 一起显示。我应该如何在objectsBean.validate
中触发oncomplete
的 if else 子句?
<p:dialog id="actionsDialog" widgetVar="actionsDialog" dynamic="true"
resizable="false" modal="true">
<ui:include src="/WEB-INF/flows/custom-flow/genericObject.xhtml"/>
<f:facet name="footer">
<p:commandButton value="Save" update="msgs"
oncomplete="if (args.validationFailed) reasonDialog.hide() else reasonDialog.show()"
actionListener="#objectsBean.validate"/>
<p:commandButton value="Cancel" immediate="true" oncomplete="actionsDialog.hide()" />
</f:facet>
</p:dialog>
【问题讨论】:
【参考方案1】:如果使用 JSF 内置的验证工具(即只使用以通常方式抛出 ValidatorException
并在其中包含所需面孔消息的验证器)出于某种原因确实不是一个选项(我真的会三思而后行,不,三次关于解决 JSF 验证工具的问题),那么您始终可以使用 FacesContext#validationFailed()
向 JSF 发出验证通常失败的信号,这正是当 ValidatorException
被捕获时 JSF 验证工具在幕后所做的事情。
FacesContext.getCurrentInstance().validationFailed();
【讨论】:
要么我这样做要么抛出异常,JSF 生命周期继续,它更新模型值并调用应用程序。验证失败时有没有办法停止页面的渲染? @Mounir:这不是正常行为。只需按照此处***.com/tags/jsf/info 的说明提出问题,这样我们就可以观察、调试和确定您的问题,以防您无法胜任该任务。 到目前为止我的行为相同,我在 primafces 命令按钮版本 5.3,JSF 2 的 actionListner 中调用了 FacesContext#validationFailed()以上是关于如何在 PrimeFaces oncomplete 中触发 args.validationFailed的主要内容,如果未能解决你的问题,请参考以下文章
将数据从对话框添加到datable-jsf-primefaces
Reactjs 如何在 formik 中使用 onCompleted() 传递值
仅当验证成功时如何执行 a4j:commandLink oncomplete?
如何在Flux的onComplete执行后返回一个Mono?