我正在使用带有 JSP 模板和 Struts 2 标签的 Struts 2。有了这些,我似乎无法检查 HashMap
中某个值的成员资格。 .
map 设置正确,有一个List<Taxon>
我正在迭代,我想检查该元素是否存在于我拥有的名为 synonyms
的 map 中这是类型 Map<Taxon, Taxon>
.
当我查看 in
时运算符,我总是得到 false,即:
<s:if test="top in synonyms"> .... </s:if>
另一方面,这总是正确的:
<s:if test="synonyms[top] != null"> ... </s:if>
如果我执行以下操作,如果元素在 map 中,我会得到正确的值,如果不在 map 中,我会得到某种空值:
<s:property value="synonyms[top].name />
奇怪的是,如果taxon
是我正在迭代的任何东西的属性(即我将它包装在另一个类中),然后检查 element != null
是否实际上工作正常。这是 OGNL 中的错误还是我做错了什么?
最佳答案
要检查您正在迭代的一个集合的元素是否包含在另一个集合中,通常使用 contains
方法。要通过 OGNL 使用调用它
<s:if test="synoynms.values.contains(top)">
或
<s:if test="synoynms.keys.contains(top)">
它将使用 Java 来确定 iterator
标记中的 top
元素是否属于集合。
关于java - 在 Struts 2 中使用 OGNL 检查 "top"值的成员资格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17282262/