0

我有一个 JSF 表单,其中有一个 textarea 和多个按钮。对于文本区域,我正在使用 f:validator 进行验证

<f:validator validatorId="myValidator" />
<a4j:support event="onsubmit" ajaxSingle="true" process="textarea1" />

验证器按预期工作。现在我在页面上有多个提交按钮,我希望验证只发生在特定按钮上,其余按钮上的验证器应该被忽略。

无论如何,是否仅将验证器限制在特定的提交按钮上。谢谢。

4

2 回答 2

3

您可以使用该disabled属性。

<f:validator validatorId="myValidator" disabled="#{empty param['formId:buttonId']}" />

formId您的 ID在哪里,<h:form>并且buttonId是按钮的 ID,它应该是触发验证的唯一按钮。

于 2012-06-27T10:48:46.500 回答
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属性(在文章中寻找进一步的解释......)

于 2012-06-27T09:25:02.670 回答