【问题标题】:Display value in a <c:forEach> loop在 <c:forEach> 循环中显示值
【发布时间】:2011-09-27 07:17:10
【问题描述】:

我正在使用 Spring MVC 3。我在控制器中设置值

mav = new ModelAndView();
mav.setViewName("reports");
mav.addObject("ReportList", ReportList);
return mav;

在 JSP 中

<c:forEach var="list" items="${ReportList}">
   $(list.name)
</c:forEach>

ReportList 的大小为 7。ReportListReport 类的列表,具有 name 作为实例正确的 getter 和 setter。

当我在浏览器中运行它时,它会显示$(list.name) 7 次。

它没有显示专有名称。

【问题讨论】:

    标签: java jsp foreach jstl


    【解决方案1】:

    这些括号:{ }

    <c:forEach var="list" items="${ReportList}">
       ${list.name}
    </c:forEach>
    

    【讨论】:

    • 但要注意${} 不会转义它输出的值,这与&lt;c:out /&gt; 不同。真可惜:/
    【解决方案2】:

    应该是${list.name} ...

    【讨论】:

      【解决方案3】:

      您应该使用&lt;c:out&gt; 标记来呈现name 属性的值。 #{list.name} 也可以工作(将( 替换为{)。

      【讨论】:

      • @TimBüthe 最好使用 因为它会转义特殊字符,因此您可以将例如“”作为打印值,并且它不会影响页面的 html 代码.
      • 这取决于 list.name 可以返回什么。恕我直言,当您到处都没有 c:out 和 h:outputText 时,它更具可读性,但防止 xss 等可能是个好主意...
      • @TimBüthe 没错,这取决于它,但如果您不想使用 &lt;c:out&gt;,恕我直言,如果名称可能包含应该转义的字符,那么您应该使用 fn:escapeXml。跨度>
      • 我想这一切都取决于您的偏好:${fn:escapeXml("myStringThatNeedsEscaping&lt;br /&gt;")}&lt;c:out value="${"myStringThatNeedsEscaping&lt;br /&gt;"}" /&gt;
      猜你喜欢
      相关资源
      最近更新 更多
      热门标签