jsp页面不显示数据,但是后台已传输数据库数据

页面上放了一个table, 代码如下

        <div class="panel-body" id="example">
            <table id="detailTable" class="table table-hover">
                <thead>
                    <tr>
                        <th>销售ID</th>
                        <th>产品ID</th>
                        <th>生产时间</th>
                        <th>产品类型</th>
                        <th>备注</th>                 
                    </tr>           
                </thead>
                <tbody>
                        <%-- <c items="${soldId}" var="sd"> --%>
                        <c var="sd">
                            <tr>
                                <td>${sd.soldId}</td>
                                <td>${sd.proId}</td>
                                <td><fmt:formatDate value="${sd.proTime}" pattern="yyyy-MM-dd" /></td>
                                <td>${sd.proType}</td>
                                <td>${sd.remark}</td>                               
                            </tr>
                        </c>
                </tbody>
            </table>            
        </div>

运行得到页面:
图片说明

后台log信息(显示已经获得数据库数据):
图片说明

为啥jsp页面不显示这段数据呢?(用的EL)

 1、后台传过来的变量名是sd吗?
 2、el表达式接受值只适合页面跳转,是否页面跳转?

后台对象名是不是和JSP的那个对象一致?

                  <c:forEach items="${soldId}" var="sd">
                        <tr>
                            <td>${sd.soldId}</td>
                            <td>${sd.proId}</td>
                            <td><fmt:formatDate value="${sd.proTime}" pattern="yyyy-MM-dd" /></td>
                            <td>${sd.proType}</td>
                            <td>${sd.remark}</td>                               
                        </tr>
                    </c:forEach>

检查问题的时候可以看看前台的返回数据,如果前台都没有值,那就是传值的问题了

我改了下:
后台代码:

    public void getSoldDetail(@PathParam("soldId")int soldId,@Context HttpServletRequest request,@Context HttpServletResponse response) 
            throws ServletException, IOException{
//      SoldDetail soldDetail = soldDetailDao.queryByIdWithProducts(soldId);
        Products products = productsService.getBySoldId(soldId);
        request.setAttribute("products", products);
        request.getRequestDispatcher("/sortable/solddetail.jsp").forward(request, response);    
        System.out.println(products);
    }

这样通过products传值到jsp页面,
一下jsp代码:




${p.soldId}
${p.proName}

${p.soldNum}
${p.price}
${p.purchaser}




运行依然jsp不显示数据
foreach里面是products吗

是这样

                            <tr>
                                <td>${soldId.soldId}</td>
                                <td>${soldId.proId}</td>
                                <td><fmt:formatDate value="${soldId.proTime}" pattern="yyyy-MM-dd" /></td>
                                <td>${soldId.proType}</td>
                                <td>${soldId.remark}</td>                               
                            </tr>

如果传过来的是一个对象不是list对象集合的话直接变量名调用属性就OK

这个问题已经解决了,昨天混乱了,传参不对,根据功能需求修改了下控制层代码:
关键部分:
Products products = productsService.getBySoldId(soldId);

request.setAttribute("products", products);

改了下页面的:


${products.soldId}
${products.proId}
${products.proName}
... ...


就显示了

谢谢大家的回答。