1

所以我有这个取消按钮:

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

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

4

1 回答 1

5

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

<p:commandButton ... process="@this" />

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

也可以看看:

于 2015-07-10T10:56:37.297 回答