1

我目前正在尝试使用 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 方法。

4

0 回答 0