如何获取jsf f f:selectItems的选定项的索引?
我有seleconeradio,例如:如何获取jsf f f:selectItems的选定项的索引?,jsf,jsf-2,selectoneradio,Jsf,Jsf 2,Selectoneradio,我有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。 若用
<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属性,并创建该类的新列表,给出正确的索引。但这是一个非常糟糕的解决方案。您应该使用indexOf(Object o)。。它返回此列表中指定元素第一次出现的索引,如果此列表不包含该元素,则返回-1。。。 您的代码可能如下所示
int index = myList.indexof(selectedValue);
您应该使用索引of(对象o)。。它返回此列表中指定元素第一次出现的索引,如果此列表不包含该元素,则返回-1。。。 您的代码可能如下所示
int index = myList.indexof(selectedValue);
对于这种情况,实际上可以使用
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>
如果您还没有这样做,请确保包含jspjstl核心名称空间
xmlns:c=”http://xmlns.jcp.org/jsp/jstl/core
在这种情况下,您实际上可以使用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>
如果您还没有这样做,请确保包含jspjstl核心名称空间
xmlns:c=”http://xmlns.jcp.org/jsp/jstl/core
选择后,您就有了选择值
设置。您可以检查列表中的哪个项目具有该值。列表中的位置是您要查找的索引。但我不能直接知道selectItems中项目的索引吗?为什么?您有名称和值。这就是你所需要的。您需要在GUI中自由地重新排序、添加和删除它们,而无需调整代码。@EJP:对不起,我不太理解您的意思。naame和值不是我所需要的全部。我需要知道您在选择后是否有selectedValue
设置。您可以检查列表中的哪个项目具有该值。列表中的位置是您要查找的索引。但我不能直接知道selectItems中项目的索引吗?为什么?您有名称和值。这就是你所需要的。您需要在GUI中自由地重新排序、添加和删除它们,而无需调整代码。@EJP:对不起,我不太理解您的意思。naame和值不是我所需要的全部。我需要知道索引,这似乎是唯一的方法。可能,你想说没有功能是的,这似乎是唯一的方法。可能,你想说在结束标记中没有功能,你不小心在结束标记中写了“foreach”,你不小心写了“foreach”