Validation 如何在JSF中有条件地要求表单字段?

Validation 如何在JSF中有条件地要求表单字段?,validation,jsf,Validation,Jsf,假设我有一个带有三个字段和两个提交按钮的h:form。提交按钮是,例如,显示报告和生成数据。为了简单起见,我希望只有一种形式,而不是多种形式。当显示报告时,需要三个字段的值作为报告显示的标准。因此,我将它们标记为required=“true”,但这会禁用生成数据的执行,这不需要这三个字段 有没有一种方法可以使JSF表单字段有条件地成为必需的,而不需要太多的自定义编码,比如requiredIf={condition}?如果生成数据操作不需要对表单数据进行任何转换或验证,则将该按钮的属性立即设置为真

假设我有一个带有三个字段和两个提交按钮的
h:form
。提交按钮是,例如,显示报告生成数据。为了简单起见,我希望只有一种形式,而不是多种形式。当显示报告时,需要三个字段的值作为报告显示的标准。因此,我将它们标记为
required=“true”
,但这会禁用生成数据的执行,这不需要这三个字段


有没有一种方法可以使JSF表单字段有条件地成为必需的,而不需要太多的自定义编码,比如
requiredIf={condition}

如果生成数据操作不需要对表单数据进行任何转换或验证,则将该按钮的属性
立即
设置为

<h:commandButton action="#{someBean.generateData}" value="Generate Data" immediate="true"/>

如果生成数据操作不需要对表单数据进行任何转换或验证,则将此按钮的属性
立即
设置为

<h:commandButton action="#{someBean.generateData}" value="Generate Data" immediate="true"/>

你试过你的建议了吗
required=#{condition}
will work你能把代码放到pastebin吗?原则上就是你说的。。。只需输入一些“”或“”,以确保正确性。根据您的需要,您可以在
required
属性中设置EL,以返回布尔值。您尝试过您的建议吗
required=#{condition}
will work你能把代码放到pastebin吗?原则上就是你说的。。。只需输入一些“”或“”,以确保正确性。根据您的需要,您可以在
required
属性中创建一个EL,返回一个布尔值。您知道是否可以保留
required=“false”
而在托管bean中执行手动数据验证,如果另一个字段和a、B的值,或者C,但如果它是D,则不需要它?我们有三个按钮,我们想通过EL向其中的两个按钮发出要求,那么我们如何做到这一点?-----如下所示:required=“#{not empty param['formId:displayReportButton']}”您知道是否可以保留
required=“false”
而在托管bean中执行手动数据验证,如果另一个字段和A,B的值,或者C,但如果它是D,则不需要它?我们有三个按钮,我们想通过EL向其中的两个按钮发出要求,那么我们如何做到这一点?-----如下所示:required=“#{非空参数['formId:displayReportButton']}”