如何在JSP文件中以表格格式显示列表内容?

时间:2011-12-27 15:33:12

标签: java jsp

在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文件中编写代码,以便以列表格式显示内容。

4 个答案:

答案 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" %>
相关问题