【问题标题】:I am trying to iterate for each loop in reverse order but not able to succeed [duplicate]我正在尝试以相反的顺序迭代每个循环,但无法成功[重复]
【发布时间】:2013-07-08 09:11:16
【问题描述】:

我正在尝试为 jsp 上的每个循环迭代一个集合。我的要求是我想以相反的顺序迭代一个 for 循环。请参考以下代码:

工作代码:从头到尾迭代工作正常:

<c:forEach items="${field.values}" var="value" varStatus="statusInner">
    ${value.value}
   </c:forEach>

试图以相反的顺序迭代:

<c:forEach items="${field.values}" var="value" begin="${fn:length(field.values)}"end="0"  varStatus="statusInner">
    ${value.value}
   </c:forEach>

谁能帮我解决我的问题。 提前致谢。

【问题讨论】:

    标签: java jsp for-loop jsp-tags


    【解决方案1】:

    试试这个(访问反向而不是迭代反向):

    <c:set var="fieldLength" value="${fn:length(field.values)}"/>
    <c:forEach items="${field.values}" varStatus="status">
      ${field.values[fieldLength - status.count]}
    </c:forEach>
    

    【讨论】:

    • 当我尝试这段代码时,我遇到了以下错误: 原因:javax.el.PropertyNotFoundException:在 java.util.LinkedHashSet 类型上找不到属性 '1'
    • 是的,因为 LinkedHashSet 不能通过索引直接访问。一种解决方案(不是一个好的解决方案)将 .ToArray() 用于哈希图,然后对其进行迭代。
    【解决方案2】:

    将步长指定为 -1,以便递减索引。如果不指定递减步骤,每次迭代的索引都会增加。

    <c:forEach items="${field.values}" var="value" 
         begin="${fn:length(field.values)" end="0"  
              varStatus="statusInner" step="-1">
        ${value}
       </c:forEach>
    

    【讨论】:

    • 您确定该代码有效吗? stackoverflow.com/questions/3879248/…
    • 尝试了同样的方法,但无法解决:(
    • 当我尝试这段代码时,我遇到了以下错误: 原因:javax.el.PropertyNotFoundException:在 java.util.LinkedHashSet 类型上找不到属性 '1'
    • @jACOB 删除表达式的.value 部分。该值已经在变量中。
    • 不允许使用否定步骤。 javax.servlet.jsp.JspTagException: 'step'
    猜你喜欢
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 2021-02-16
    • 2010-12-19
    • 2017-03-28
    • 2012-01-09
    • 1970-01-01
    相关资源
    最近更新 更多