在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") %>
我的要求是该列表的内容应以表格格式显示。
第一列中的条形码值及其在第二列中的相应Tareweight值。
建议我在JSP文件中编写代码,以便以列表格式显示内容。
答案 0 :(得分:13)
使用HTML <table>
元素表示HTML中的表格。使用JSTL <c:forEach>
迭代JSP中的列表。
E.g。
<%@ 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>
我建议创建一个自定义类来保存相关数据。 E.g。
public class Product {
private BigDecimal tareWeight;
private String barCode;
// Add/autogenerate getters/setters/equals/hashcode and other boilerplate.
}
这样您最终得到的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);
答案 1 :(得分:2)
使用<c:forEach>
和<TABLE>
例如:
<TABLE>
<c:forEach items="${personList} var="peson">
<tr>
<td><c:out value="${person.name}"/></td>
<td><c:out value="${person.age}"/></td>
</tr>
</c:forEach>
</TABLE>
答案 2 :(得分:1)
首先,您不应该在JSP中使用scriptlet。使用JSTL,其他自定义JSP标记和表达式语言。
第二:MVC框架的目的是让动作为视图准备模型,这应该保持非常简单。您可能应该使操作创建一个对象列表,每个对象包含条形码中的字段及其对应的tareweight。这样,您只需在JSP中进行一次迭代。
因此代码非常简单:
<c:forEach var="barCodeAndTareWeight" items="BARCODE_AND_TAREWEIGHTS">
<tr>
<td><c:out value="${barCodeAndTareWeight}.someField"/></td>
<td><c:out value="${barCodeAndTareWeight}.someOtherField"/></td>
</tr>
</c:forEach>
请注意,存在特定的自定义标记来显示表格,支持排序,分页等。我喜欢使用displaytag。
答案 3 :(得分:1)
我在.jsp
页面上添加了此内容,问题已解决:
<%@ page isELIgnored="false" %>