JSP 用于构建对象列表的 EL 表达式

JSP EL Expression for building a list of objects

我接到了重构 JSP 项目的任务,我上一次为 JSP 编码是在 2005 年,那时候我们使用了更多的 scriptlet,而且 - AFAIK - 没有表达语言。

我当前面对的页面片段是这样的:

<c:if test="${value.prepphase.exists}">
<div>${value.prepphase.value.status}</div>
<div>${value.prepphase.value.eta}</div>
</c:if>

<c:if test="${value.initphase.exists}">
<div>${value.initphase.value.status}</div>
<div>${value.initphase.value.eta}</div>
</c:if>

<c:if test="${value.legalphase.exists}">
<div>${value.legalphase.value.status}</div>
<div>${value.legalphase.value.eta}</div>
</c:if>

<c:if test="${value.auctionphase.exists}">
<div>${value.auctionphase.value.status}</div>
<div>${value.auctionphase.value.eta}</div>
</c:if>

<c:if test="${value.analysisphase.exists}">
<div>${value.analysisphase.value.status}</div>
<div>${value.analysisphase.value.eta}</div>
</c:if>

重复太多了吧?

我的计划是构建一个 value.prepphase, value.initphase, value.legalphase, value.auctionphase, value.analysisphase 对象的集合(实际上是一个列表),然后:

<c:forEach var="phase" items="${now how to build the list?!?!?!}">
<c:if test="${phase.exists}">
<div>${phase.value.status}</div>
<div>${phase.value.eta}</div>
</c:if>
</c:forEach>

我的问题是:如何建立列表?

我试过:

${java.util.Arrays.asList(value.prepphase, value.initphase, value.legalphase, value.auctionphase, value.analysisphase)}value 不可用;

[${value.prepphase}, ${value.initphase}, ${value.legalphase}, ${value.auctionphase}, ${value.analysisphase}] 但这会产生一个包含 5 个字符串的列表 ("[${value.prepphase}", "${value.initphase}" ... "${value.analysisphase}]")

我不知道还能尝试什么。

更新

项目的 web.xml 说 <web-app version="3.0">

找到了:

<c:forEach var="phase" items="${[value.prepphase, value.initphase, value.legalphase, value.auctionphase, value.analysisphase]}">
...
</c:forEach>