我试图做一个搜索功能,我有多个领域,至少需要其中一个,或他们的一组。JSF所需的至少一个/多个字段组
我StackOverflow上发现的唯一的答案是这样的一个:How to validate if at least one of multiple input fields is entered?
而且有2个解决方案有:一是使用Omnifaces(我不能因项目要求使用),另一种是不优雅,因为当字段数量很大时它会增长很多。
我有这些领域例如:
<p:selectOneMenu value="#{backingBean.type}"id="type">
<f:selectItem itemLabel="#{constantsController.SELECT_TYPE_HEADER}"
itemDisabled="true" />
<f:selectItems
value="#{constantsController.getTypes().entrySet()}"
var="entry" itemValue="#{entry.key}" itemLabel="#{entry.value}" />
</p:selectOneMenu>
<p:inputText id="number" value="#{backingBean.number}"/>
<p:inputText id="year" value="#{backingBean.year}"/>
<p:inputText id="number2" value="#{backingBean.number2 }"/>
<p:selectOneMenu value="#{backingBean.state}"
id="state" filter="true" filterMatchMode="startsWith">
<f:selectItem itemLabel="Choose its state" disabled="true" />
<f:selectItems value="#{constantsController.getStates().entrySet()}"
var="entry" itemValue="#{entry.key}" itemLabel="#{entry.value}" />
</p:selectOneMenu>
<p:selectOneMenu id="entity"
value="#{backingBean.entity }">
<f:selectItem itemLabel="Select entity"
itemDisabled="true" />
<f:selectItem itemLabel="Entity1" itemValue="1"></f:selectItem>
<f:selectItem itemLabel="Entity2" itemValue="2"></f:selectItem>
</p:selectOneMenu>
<p:selectOneMenu id="documentType"
value="#{backingBean.documentType}">
<f:selectItems
value="#{constantsController.getDocumentTypes().entrySet()}"
var="entry" itemValue="#{entry.key}" itemLabel="#{entry.value}" />
</p:selectOneMenu>
<p:inputText id="documentNumber" value="#{backingBean.documentNumber}"/>
因此,大家可以看到,我有多个领域。和要求决定了我需要以下要求(我会写的id)之一:
1类型+编号+年
2 - 数字2 +状态
3-实体
4-文档类型+文档编号
所以我当我点击commandButton时,我需要这个来检查这些组中的一个(1,2,3或4)是否被填充。
此外,这些组本身也需要被要求,也就是说我已经填充了“实体”,并且我还填写了“年份”,它不能让我提前进行,因为年份需要伴随'类型'和'数'。
您可以在Java(服务器端)检查所需的字段/组,而不是在客户端检查 –
是的,这是我的解决方案。感谢您的帮助。 –