我試圖做一個搜索功能,我有多個領域,至少需要其中一個,或他們的一組。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(服務器端)檢查所需的字段/組,而不是在客戶端檢查 –
是的,這是我的解決方案。感謝您的幫助。 –