【问题标题】:Two dimensional arraylist with c:foreach jstl tag带有 c:foreach jstl 标记的二维数组列表
【发布时间】:2011-05-31 12:55:30
【问题描述】:

我在两个重叠的 JSTL <c:forEach> 中使用二维数组列表:

<select multiple size="30">
    <c:forEach var="uri" items="${defaultResult}" varStatus="iterator">
        <c:forEach var="cate" items="${defaultResult[iterator.index]}">
         <option value="${defaultResult[iterator.index][0]}"> ${cate}[1]</option>
        </c:forEach> 
    </c:forEach>
</select>

但索引似乎不起作用,例如${cate}[1]返回的值是任何维度的所有值,后跟[1]

如果您有任何想法可以解决我的问题,那将会很有帮助。

【问题讨论】:

    标签: jsp jstl el


    【解决方案1】:

    它需要进入表达式内部,而不是外部。

    ${cate[1]}
    

    对了,你为什么不直接访问第一个循环的var

    <c:forEach var="uri" items="${defaultResult}">
        <c:forEach var="cate" items="${uri}">
            <option value="${uri[0]}">${cate[1]}</option>
        </c:forEach> 
    </c:forEach>
    

    【讨论】:

    • 是的,但是当我这样做时,我遇到了一个异常:GRAVE: "Servlet.service()"for the servlet LinkedServlet 生成了一个异常 javax.el.PropertyNotFoundException: The class 'java.lang. String' 没有属性 '1'
    • 所以${cate}实际上是String?验证预填充${defaultResult} 的代码逻辑。显然你用List#toString()而不是List填充它。
    • 是的,你是对的,但我无法删除 toString(),所以我会尝试将我的数据放入地图中
    • 嗯,无法删除它表明一个更大的问题。为什么你不能这样做?
    • 因为我正在使用 jena 库来获取一些 SPARQL 查询的结果,并且它不允许我在最后没有任何东西的情况下得到结果。
    【解决方案2】:

    它对我有用:

    .java:

    private int[][] childAges; // [room][child] = age
    .....
    

    .jsp:

    <c:forEach var="childAge" items="${childAges}" >
        <c:forEach var="age" items="${childAge}" >
            ${age}
        </c:forEach>
    </c:forEach>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-08
      • 2021-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多