如何获得选定项目的索引jsf:selectItems



我有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标签?或者这是不可能的?

注:我可以通过创建一个新类来实现,在这个类中我有index属性,然后创建一个新的类列表,给出正确的索引。但这是一个非常糟糕的解决方案。

对于这种情况,您实际上可以使用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

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

int index  = myList.indexof(selectedValue);

相关内容

  • 没有找到相关文章

最新更新