p:命令按钮不会在验证错误时调用操作



所以我有了这个取消按钮:

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

取消按钮所在的小部件(<p:dialog>)有一个日期字段。每次我打开对话框,输入一些有效值并单击取消- myBean.doOnCancel被执行,对话框被隐藏。现在每次我打开对话框,输入一个无效的值,比如一个字母代替日期,我得到一个验证消息说日期格式不好,然后单击取消-对话框被隐藏,但在行动(myBean.doOnCancel)中定义的方法没有执行。知道为什么吗?

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

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

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

参见:

  • 了解PrimeFaces process/update和JSF f:ajax execute/render属性
  • 如何跳过验证时,一个特定的按钮被点击?

相关内容

  • 没有找到相关文章

最新更新