You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从JSP标签获取Bean值?遍历Order对象属性报错解决方案

解决JSP中<c:forEach>遍历Order列表时属性访问错误的问题

嘿,问题根源一眼就能看出来——你在<c:forEach>里把循环变量的名字和整个集合的名字搞重了!你写的var="orders"和存在request里的集合名完全一样,JSP根本分不清你要访问的是单个Order对象还是整个列表,不出错才怪呢😅

正确的写法应该是这样:

把var改成单数的order(语义上也更合理,毕竟每次循环取的是单个订单),然后在循环体内用order.属性名来访问单个对象的属性:

<c:forEach items="${orders}" var="order">
    <!-- 示例:访问height属性 -->
    <div>订单高度:${order.height}</div>
    <!-- 其他属性同理,比如订单ID、名称等 -->
    <div>订单ID:${order.id}</div>
</c:forEach>

为什么这样能解决问题?

  • items="${orders}"指向的是你Servlet中存入request的ArrayList<OrderSample>集合,这部分你写的逻辑完全没问题
  • var="order"表示每次循环时,集合里的单个OrderSample实例会被赋值给order变量,此时用order.height就会正确调用该对象的getHeight()方法(EL表达式的点运算符是依赖getter方法的哦)

额外要注意的点:

别忘记你的OrderSample类必须有对应属性的getter方法!比如要访问height,就得有public Integer getHeight()(返回类型根据你的属性定义调整),否则EL表达式还是取不到值。

附一下你写的正确的Servlet代码(这部分逻辑没问题,不用修改):

@Override
String execute(HttpServletRequest request, HttpServletResponse response) throws LoginSampleException {
    try{
        ArrayList<OrderSample> orders =UserMapper.showOrders();
        request.setAttribute("orders", orders);
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(Employee.class.getName()).log(Level.SEVERE, null, ex);
    } catch (SQLException ex) {
        Logger.getLogger(Employee.class.getName()).log(Level.SEVERE, null, ex);
    }
    return "employeepage";
}

内容的提问来源于stack exchange,提问作者jendellkenner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:47:33