我有一个JSF表单,其中有一个textarea和多个按钮。 对于文本区域,我正在使用f:validator
进行验证<f:validator validatorId="myValidator" />
<a4j:support event="onsubmit" ajaxSingle="true" process="textarea1" />
验证器按预期工作。现在我在页面上有多个提交按钮,我希望验证仅在特定按钮上发生,并且在剩余按钮上应忽略验证器。
无论如何,仅在特定的提交按钮上限制验证器。感谢。
答案 0 :(得分:3)
您可以使用disabled
属性。
<f:validator validatorId="myValidator" disabled="#{empty param['formId:buttonId']}" />
其中formId
是<h:form>
的ID,buttonId
是按钮的ID,该按钮应该是触发验证的唯一按钮。
答案 1 :(得分:2)
我假设您在点击其他按钮时也要向服务器提交textarea
值(因此无法使用process
属性进行播放)
如何将immediate="true"
添加到其他按钮?
这样他们就会跳过验证,而没有immediate="true"
的提交按钮会按预期进行验证
或者
本文JSF 2 - Conditionally Skip Validation
中似乎有另一种解决方法像
这样的东西<h:commandButton action="#{bean.someMethod"} value="Submit2">
<f:param name="skipValidation" value="true"/>
</h:commandButton>
并在验证器的validate
方法内检查skipValidation
attirbute(在文章中寻找进一步的解释......)