Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取jsf f f:selectItems的选定项的索引?_Jsf_Jsf 2_Selectoneradio - Fatal编程技术网

如何获取jsf f f:selectItems的选定项的索引?

如何获取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。 若用

我有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属性,并创建该类的新列表,给出正确的索引。但这是一个非常糟糕的解决方案。

您应该使用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”