如何消除jsp表达式语言中的重复值?

时间:2011-12-11 14:08:20

标签: jsp

<c:forEach items="${listOfRoutes}" var = "route">
                <option value="${route.source }" >${route.source }</option>
              </c:forEach>

这里listOfRoutes包含Route(id,source,destination)对象。 在这里,我想只展示不同的来源。 怎么做,请帮助我。

2 个答案:

答案 0 :(得分:2)

首先,你必须决定什么使一条路线与另一条路线不同。不同的ID?不同的ID-Source-Destination?

然后,在equals对象上实施hashCodeRoute。 IDE通常可以选择通过选择哪些字段必须是计算的一部分来生成这些方法。

最后,使用Set<Route>来存储路线,而不是List<Route>。如果要保留插入顺序,可以选择LinkedHashSet作为实现。 Set是一个不存储重复项的集合,因此它满足您的需求。

JSTL代码将保持不变。

答案 1 :(得分:1)

您可以使用Set通过迭代列表存储源代码,因为Set不允许重复,然后使用Set填充选项中的源代码,请查看下面的代码。

<%
 Set setSource = new HashSet(); 
for(Route route:listOfRoutes){
 setSource.add(route.getSource()); 
 }
 %>


<c:forEach items="${setSource}" var = "source">
<option value="${source}" >${source}</option>
</c:forEach>

如果您希望选项具有排序值,请使用TreeSet