p:commandButton 不对验证错误调用操作

eig*_*ght 1 validation jsf cancel-button primefaces

所以我有这个取消按钮:

<p:commandButton id="cancelButton" value="Cancel" action="#{myBean.doOnCancel}" onclick="dialogWidget.hide();" />
Run Code Online (Sandbox Code Playgroud)

取消按钮所在的小部件 ( <p:dialog>) 有一个日期字段。每次我打开对话框时,输入一些有效值并单击取消 -myBean.doOnCancel执行并隐藏对话框。现在,每次我打开对话框时,输入一个无效值,例如单个字母而不是日期,我都会收到一条验证消息,指出日期格式错误,然后单击取消 - 对话框已隐藏,但操作中定义的方法 ( myBean.doOnCancel)不被执行。知道为什么吗?

Bal*_*usC 5

当处理表单提交期间出现验证错误时,JSF 将根据规范不调用 action 方法。<p:commandButton>默认情况下,整个表单的流程如<p:commandButton process="@form">. 您只想将其限制为按钮本身。

<p:commandButton ... process="@this" />
Run Code Online (Sandbox Code Playgroud)

对话框被成功隐藏,因为它在提交表单之前完全在客户端执行,独立于操作方法的结果。

也可以看看: