在Action.java文件中,正在使用以下代码。
request.setAttribute("TAREWEIGHT", tareWeightList); request.setAttribute("BARCODE", barcodeList); return (mapping.findForward(target));
tareWeightList和BarcodeList实际上包含几个值。将列表值设置为属性后,java文件会将内容转发到JSP文件。
在JSP文件中,我可以使用下面的行获取内容,
<%=request.getAttribute("TAREWEIGHT")%> <%=request.getAttribute("BARCODE") %>
我的要求是,该列表的内容应以表格格式显示。
第一列中的条形码值和第二列中的对应的皮重值。
向我提出一个在JSP文件中编写代码的想法,以便使内容以列表格式显示。
使用HTML <table>元素表示HTML中的表格。使用JSTL <c:forEach>遍历JSP中的列表。
<table>
<c:forEach>
例如
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> ... <table> <c:forEach items="${list}" var="item"> <tr> <td><c:out value="${item}" /></td> </tr> </c:forEach> </table>
您的代码中只有一个设计缺陷。您已将相关数据划分为2个独立的列表。最终的方法会像
<table> <c:forEach items="${TAREWEIGHT}" var="tareWeight" varStatus="loop"> <c:set var="barCode" value="${BARCODE[loop.index]}" /> <tr> <td><c:out value="${tareWeight}" /></td> <td><c:out value="${barCode}" /></td> </tr> </c:forEach> </table>
我建议创建一个自定义类以将相关数据存储在一起。例如
public class Product { private BigDecimal tareWeight; private String barCode; // Add/autogenerate getters/setters/equals/hashcode and other boilerplate. }
因此您最终得到一个List<Product>可以表示为的:
List<Product>
<table> <c:forEach items="${products}" var="product"> <tr> <td><c:out value="${product.tareWeight}" /></td> <td><c:out value="${product.barCode}" /></td> </tr> </c:forEach> </table>
将其放入请求范围后,如下所示:
request.setAttribute("products", products);