我正在使用带有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中的错误还是我做错了什么?
答案 0 :(得分:0)
要检查您正在迭代的一个集合的元素是否包含在另一个集合中,通常使用contains
方法。要通过OGNL调用它
<s:if test="synoynms.values.contains(top.value)">
或
<s:if test="synoynms.keys.contains(top.key)">
它将使用Java来确定集合中top
标记中的iterator
元素。