如何在JSTL中按列获取列名和元素

时间:2016-10-06 03:43:35

标签: jsp model-view-controller jstl

假设我实现了MVC模型,有一个List对象,它包含来自数据库的数据,我在会话bean中使用JPA并传递给servlet。然后List对象从servlet传递给jsp。由于我需要使用JSTL在JSP中的表中显示它,因此数据库中有很多40 ++列。

如何通过调用列索引而不是列名来显示它,以便我可以循环它而不是键入列名?我的基本想法是:

<table>
<tr>
    <c:forEach var="i" begin="1" end="49" items="${listObject}">
       <td>${//here to loop listObject column name by index}</td>
    </c:forEach>
</tr>
<c:/forEach item="${listObject}"  var="a">
 <tr>
    <c:forEach var="i" begin="1" end="49">
    <td>${//here to loop listObject data by column index}</td>
    </c:forEach>
</tr>
</c:forEach>
</table>

这样输出就像:

stu ID   | First Name | Last Name | Attendance Week 1| ...... | Attendance Week 46
-----------------------------------------------------------------------------------
         |            |           |                  |        |
         |            |           |                  |        |
         |            |           |                  |        |
         |            |           |                  |        |

我不可能从第1列到第40列++输入,所以我想使用循环,任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

你需要&#34;反思&#34;实现这一目标 基本思路是:

  • 遍历对象的字段/属性。
  • 创建一个名为fieldValueList的字符串列表,其中包含属性的所有值。 op的listObject的每个元素都需要有一个对应的fieldValueList。
  • 在JSTL中,只需循环listObject,然后循环fieldValueList。

这是另一个非常相关的主题 How to loop over a Class attributes in Java?

与您的问题无关,您可能需要考虑重构/规范化表格,以便您的表格不包含硬编码&#34;出勤周期&#34;从1到46,所以你不需要对这个看似简单的问题进行反思。