[英]How to Display List Contents in tabular format in a JSP file?
在 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 文件中编写代码的想法,以便以表格格式显示内容。
使用 HTML <table>
元素表示 HTML 中的表格。 使用 JSTL <c:forEach>
迭代 JSP 中的列表。
例如
<%@ 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>
,它可以表示如下:
<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);
使用<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>
我在.jsp
页面添加了这个,问题解决了:
<%@ page isELIgnored="false" %>
首先,您不应该在 JSP 中使用 scriptlet。 使用 JSTL、其他自定义 JSP 标记和表达式语言。
第二:MVC 框架的重点是让动作为视图准备模型,这应该非常简单。 您可能应该让操作创建一个对象列表,每个对象都包含来自条形码的字段及其相应的自重。 这样,您的 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 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.