所以我有这个取消按钮:
<p:commandButton id="cancelButton" value="Cancel" action="#{myBean.doOnCancel}" onclick="dialogWidget.hide();" />
取消按钮所在的小部件(<p:dialog>
)具有日期字段。每次打开对话框时,输入一些有效值并单击取消 - 执行myBean.doOnCancel
并隐藏对话框。
现在,每当我打开对话框时,输入一个无效值,例如单个字母而不是日期,我会收到一条验证消息,说明日期格式不好,然后单击取消 - 对话框被隐藏但操作中定义的方法({ {1}})未执行。
知道为什么吗?
答案 0 :(得分:4)
当处理表单提交期间出现验证错误时,JSF将按照规范不调用操作方法。 <p:commandButton>
默认处理整个表单,如<p:commandButton process="@form">
。您只想将其限制为按钮本身。
<p:commandButton ... process="@this" />
对话框已成功隐藏,因为它在提交表单之前完全由客户端执行,与操作方法的结果无关。