我目前正在尝试使用 h:selectOneMenu 从用户那里获取输入。当用户提交表单时,用户要么再次进入同一页面,要么进入不同的页面。只要用户总是选择第一个可用的选项,一切都很好,但是一旦他选择另一个选项,id=selection1 的组件就会抱怨:验证错误 - 值无效。
这是表格:
<h:form styleClass="form-horizontal">
<div class="form-group">
<div class="col-sm-offset-2 col-sm-8">
<div class="checkbox">
<label><h:selectBooleanCheckbox value="#{startBean.abstainFromItem}"></h:selectBooleanCheckbox>Bei dieser Frage enthalten</label>
</div>
</div>
</div>
<div class="form-group">
<ui:fragment rendered="#{startBean.currentItem.type != 'M_OF_N'}">
<h:outputLabel for="selection1" styleClass="col-sm-2" value="Option(en) auswählen:"/>
<div class="col-sm-8">
<h:selectOneMenu value="#{startBean.buffer[0]}" styleClass="form-control" id="selection1">
<f:converter converterId="javax.faces.Integer"/>
<ui:param name="iValue" value="0"/>
<c:forEach items="#{startBean.currentItem.options}" var="option1">
<f:selectItem itemLabel="#{option1.title}" itemValue="#{iValue}"/>
<ui:param name="iValue" value="#{iValue + 1}"/>
</c:forEach>
</h:selectOneMenu>
<h:message for="selection1"/>
</div>
</ui:fragment>
<ui:fragment rendered="#{startBean.currentItem.type == 'M_OF_N'}">
<h:outputLabel for="selection2" styleClass="col-sm-2" value="Option(en) auswählen:"/>
<div class="col-sm-8">
<h:selectManyMenu styleClass="form-control" id="selection2" value="#{startBean.buffer}">
<f:converter converterId="javax.faces.Integer"/>
<ui:param name="lValue" value="0"/>
<c:forEach items="#{startBean.currentItem.options}" var="option2">
<f:selectItem itemLabel="#{option2.title}" itemValue="#{lValue}"/>
<ui:param name="lValue" value="#{lValue + 1}"/>
</c:forEach>
</h:selectManyMenu>
</div>
</ui:fragment>
</div>
<ui:debug/>
<ui:fragment rendered="#{startBean.index lt startBean.count}">
<div class="form-group">
<div class="col-sm-offset-2 col-sm-8">
<h:commandButton styleClass="btn btn-primary" value="Nächstes Item" action="submitvote">
<f:actionListener binding="#{startBean.nextItem()}"/>
</h:commandButton>
</div>
</div>
</ui:fragment>
<ui:fragment rendered="#{startBean.index == startBean.count}">
<div class="form-group">
<div class="col-sm-offset-2 col-sm-8">
<h:commandButton styleClass="btn btn-primary" value="Stimmzettel abgeben" action="index">
<f:actionListener binding="#{startBean.submit()}"/>
</h:commandButton>
</div>
</div>
</ui:fragment>
</h:form>
类似问题有多种答案,但它们都使用了 f:selectItems 标签,而我没有。我也不认为我需要实现 equals 方法。