JSTL 迭代列表

JSTL iterate list

我有这个 class:

public class Orders{

    private Integer id;
    private String name;

    //getters/setters

}

在控制器中我将 List<Orders> 传递给 jsp:

@RequestMapping(value = "/orders")
public ModelAndView orders(){

    List<Orders> orders = ...//get list from db

    //print list in console
    orders.forEach(e -> System.out.println(e.getId() + " - " + e.getName()));
    //print -> 1 - name1 ; 2 - name2

    return new ModelAndView("orders", "orders", orders);

}

jsp中这样使用:

${orders.size()}
<c:forEach items="${orders}" var="order">
    <c:out value="${order.getId()}"></c:out>
</c:forEach>

在浏览器中检查(html 代码)如下所示:

"2"
<c:foreach items="[com.web.entity.Orders@21e16dd6, 
                   com.web.entity.Orders@52a33913]" var="order">
    <c:out value=""></c:out>
</c:foreach>

我通过在控制台中打印列表在控制器中进行了测试,一切正常。

为什么在jsp中没有打印出来?

能否提供更多详细信息(控制器代码、html 页面标签...)。 我还有一些要点要与您分享:

  • 在 Entity/POJO.
  • 中始终使用 toString 方法
  • 使用order.id代替order.getId()
  • 确保您的 HTML 页面顶部有 JSTL 核心标记:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  • 尝试使用简单的 c:out 标签:
<c:out value="${order.id}"/>