【问题标题】:JSTL forEach use variable in javacodeJSTL forEach 在java代码中使用变量
【发布时间】:2011-05-09 14:19:33
【问题描述】:

我想在<% JavaCode/JSPCode %> 中使用我的c:forEach 中的实际项目。 如何访问此项目?

<c:forEach var="item" items="${list}">
   <% MyProduct p = (MyProduct) ${item}; %>   <--- ???
</c:forEach>

【问题讨论】:

    标签: java jsp foreach jstl


    【解决方案1】:

    &lt;% %&gt; 中的任何内容都必须是有效的 Java,而 ${item} 不是。 ${...} 是 JSP EL 语法。

    你可以这样做:

    <c:forEach var="item" items="${list}">
       <% MyProduct p = (MyProduct) pageContext.getAttribute("item"); %>   
    </c:forEach>
    

    但是,这是编写 JSP 的一种可怕方式。当您已经在使用 JSTL/EL 时,为什么还要使用 scriptlet?显然你在 &lt;forEach&gt; 里面放了一些东西,不管它是什么,你应该可以不使用 scriptlet 来做。

    【讨论】:

      【解决方案2】:

      不要使用 scriptlet(即 &lt;% %&gt; 标记之间的东西。这被认为是不好的做法,因为它鼓励在视图上下文中放置太多代码,甚至是业务逻辑。相反,坚持使用 JSTL 和 EL 表达式独家。试试这个:

      <c:forEach var="item" items="${list}">
          <c:set var="p" value="${item}" />
      </c:forEach>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-24
        • 1970-01-01
        • 1970-01-01
        • 2011-03-19
        • 2011-10-05
        • 1970-01-01
        相关资源
        最近更新 更多