页面上放了一个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代码:
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}
... ...
就显示了
谢谢大家的回答。