Jsf 2 当命令按钮在数据表外部但在表单内部单击时,如何在数据表内部使复选框required为true?
我有多个表单,每个表单至少有一个基于不同条件呈现的命令按钮。我在表单中有一个datatable,其中一列是Jsf 2 当命令按钮在数据表外部但在表单内部单击时,如何在数据表内部使复选框required为true?,jsf-2,checkbox,jboss7.x,Jsf 2,Checkbox,Jboss7.x,我有多个表单,每个表单至少有一个基于不同条件呈现的命令按钮。我在表单中有一个datatable,其中一列是。在datatable之外,我放置了一个命令按钮,这样用户可以通过选中复选框选择一行并提交表单。我能够成功地完成这项任务 但是,当只单击此特定表单中的commandbutton时,我必须使成为必需。但是当我按照下面的方法做的时候,它根本不起作用。当用户没有选择datatable中的任何复选框并提交表单时,如何使复选框成为必需的 < h:form prependId="false
。在datatable之外,我放置了一个命令按钮,这样用户可以通过选中复选框选择一行并提交表单。我能够成功地完成这项任务
但是,当只单击此特定表单中的commandbutton时,我必须使
成为必需。但是当我按照下面的方法做的时候,它根本不起作用。当用户没有选择datatable中的任何复选框并提交表单时,如何使复选框成为必需的
< h:form prependId="false" rendered="#{bean.somecondition}">
<h:dataTable id="userdata" value="#{bean.list}" var="obj">
<h:column>
<h:selectBooleanCheckbox required="#{not empty param[commandbutton.clientId]}"
requiredMessage="Please select atleast one check box to proceed."
value="#{bean.checked[obj.Id]}" />
</h:column>
</h:dataTable>
<h:commandButton value="submit" binding="#{commandbutton}"
action="#{bean.someaction}">
</h:commandButton>
</h:form>
但是我想用JSF来做这件事,required=“true”
首先在复选框上不起作用。这完全与它是否在数据表中无关,也与required
属性是用true
硬编码还是来自EL表达式无关
具体原因是选中的值为从不null
。未选中时,它只是false
,而不是null
或空字符串。因此,即使未选中,required=“true”
验证始终通过
JSF实用程序库已经发现了这个问题,并为此提供了一个解决方案
在您的特定情况下,您可以按如下方式使用它:
<h:selectBooleanCheckbox
requiredMessage="Please select at least one check box to proceed."
value="#{bean.checked[obj.Id]}">
<f:validator
validatorId="omnifaces.RequiredCheckboxValidator"
disabled="#{empty param[commandbutton.clientId]}" />
</h:selectBooleanCheckbox>
@BalusC。。。。。。。。。谢谢你的解释。我完全错过了部分
当我考虑它时,检查值从不为空。无论如何,我们已经在应用程序中使用了omnifaces
。我将在我们的应用程序中实现此代码。
<h:selectBooleanCheckbox
requiredMessage="Please select at least one check box to proceed."
value="#{bean.checked[obj.Id]}">
<f:validator
validatorId="omnifaces.RequiredCheckboxValidator"
disabled="#{empty param[commandbutton.clientId]}" />
</h:selectBooleanCheckbox>