Struts 2 OGNL,检查“顶级”值的成员资格

时间:2013-06-24 18:19:29

标签: java jsp struts2 ognl valuestack

我正在使用带有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中的错误还是我做错了什么?

1 个答案:

答案 0 :(得分:0)

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

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

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

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