1

我正在使用带有 JSP 模板和 Struts 2 标签的 Struts 2。有了这些,我似乎无法检查HashMap.

地图设置正确,有一个List<Taxon>我正在迭代,我想检查该元素是否存在于我拥有的地图中,称为synonyms类型为Map<Taxon, Taxon>.

当我与in运营商核对时,我总是会出错,即:

<s:if test="top in synonyms"> .... </s:if>

另一方面,这总是正确的:

<s:if test="synonyms[top] != null"> ... </s:if>

如果我执行以下操作,如果元素在地图中,我会得到正确的值,如果不是,则会得到某种空值:

<s:property value="synonyms[top].name />

奇怪的是,如果taxon是我正在迭代的任何东西的属性(即我将它包装在另一个类中),然后检查它是否element != null真的工作正常。这是 OGNL 中的错误还是我做错了什么?

4

1 回答 1

0

要检查您正在迭代的一个集合的元素是否包含在另一个集合中,通常使用contains方法。要通过 OGNL 调用它,请使用

<s:if test="synoynms.values.contains(top)"> 

或者

<s:if test="synoynms.keys.contains(top)"> 

它将使用 Java 来确定标记中的top元素是否属于集合。iterator

于 2013-06-24T20:16:11.903 回答