0

我有seleconeradio,例如:

<h:selectOneRadio value="#{myBean.selectedValue}" layout="pageDirection">
    <f:selectItems value="#{myBean.myList}" var="a" itemValue="#{a}" itemLabel="#{a}"/>
</h:selectOneRadio>

其中 myList 是整数列表,例如 1,3,2,4。如果用户选择第二个元素(即 3),我希望 myBean 中的 selectedValue 为 2,所以我想获取 selectItems 项的索引。

我应该在 f:selectItems itemValue 标签中写什么?或者这是不可能的?

PS我可以通过创建一个具有索引属性的新类并创建该类的新列表来提供正确的索引。但这是非常糟糕的解决方案。

4

2 回答 2

6

您实际上可以c:forEach用于这种情况。当您必须处理包含重复项的集合并因此无法使用时,这尤其有用indexOf()

<h:selectOneRadio value="#{myBean.selectedValue}" layout="pageDirection">
  <c:forEach items="#{myBean.myList}" var="a" varStatus="idx">
    <f:selectItem itemValue="#{idx.index}" itemLabel="#{a}"/>
  </c:forEach>
</h:selectOneRadio>

如果您还没有完成,请确保包含 JSP JSTL Core 命名空间。

xmlns:c="http://xmlns.jcp.org/jsp/jstl/core

于 2016-12-12T14:11:01.590 回答
0

您应该使用 indexOf(Object o) .. 它返回此列表中指定元素第一次出现的索引,如果此列表不包含该元素,则返回 -1 ...您的代码应该看起来像这样..

int index  = myList.indexof(selectedValue);
于 2014-05-06T04:50:54.300 回答