【问题标题】:Access element by index with a forEach command使用 forEach 命令按索引访问元素
【发布时间】:2011-12-13 09:11:02
【问题描述】:

我想按索引访问值,因为我需要在列表的一半上循环并在两列上显示值...所以我需要使用索引值 + x

<c:forEach var="endValue" items="${endValue.list}" end="${lngth-1}" varStatus="status">
    <c:out value="${endValue.list[status.index+5].id}"/>
</c:forEach>

显示标签值无效

编辑:

//controler
@ModelAttribute("endValue")
public EndValueListWrapper populateDataList() {
    final EndValueListWrapper listForm = new EndValueListWrapper();
    ...
    return listForm
}

public class EndValueListWrapper {

   private List<EndValueForm> list;

   // get and set for this list
}

public class EndValueForm{
   private Strind id
   ...
}

【问题讨论】:

  • 如果你说的是两列,为什么要+5?介意给出更好的解释吗?
  • 只是一个例子...你可以删除+5,反正不起作用

标签: java jsp foreach jstl


【解决方案1】:

我很确定这不会像您期望的那样工作。查看JSTL tag lib referenceendValue 是 items 集合内的单个实例,因此尝试遍历 endValue.list 并调用该集合 endValue 中的每个实例是没有意义的。 lngth 在哪里定义?如果要长度为 -1,您甚至不需要显式设置 end

<c:forEach items="${teams}" varStatus="status">
   <c:set var="desiredTeam" value="${teams[status.index+5]}" /> 
   <c:out value="${desiredTeam.id}"/>
</c:forEach>

...或类似的东西。

【讨论】:

  • 答案的第一部分是正确的,但第二部分不是。状态不是字符串。它是 LoopTagStatus 的一个实例,它有一个 index 属性。见docs.oracle.com/javaee/6/api/javax/servlet/jsp/jstl/core/…。如果您只是删除答案的最后一部分,我将取消我的反对票。
  • lngth 在之前定义...它的值是列表长度的一半大小值,status.index 以获取循环计数器 var
  • 哎呀,我猜我对标签参考页的格式感到困惑。该属性的预期输入值是一个字符串,而不是结果,您正确地注意到它是一个 LoopTagStatus。哎呀!
  • @Visionary:代码 sn-p 仍然不正确。它应该是 value="${teams[status.index + 5]}"
  • 我明白了,不知道如何迭代项目
猜你喜欢
  • 2017-04-23
  • 1970-01-01
  • 2019-07-28
  • 1970-01-01
  • 2013-09-04
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多