我有两个Set
s
set1 contains("A","B","C","D") elements
set2 contains("E","F","D","G") elements
我想将set1
的每个元素与set2
的每个元素进行比较,并使用Struts2标记显示匹配的元素。
答案 0 :(得分:3)
重新排列以更好地列出几种方式:
有两个Iterator
s:
<s:iterator value="setOne" var="first" status="ctr1">
<s:iterator value="setTwo" var="second" status="ctr2">
<s:if test="%{#first == #second}">
Common value detected : [<s:property value="%{#first}"/>]
<br/> setOne position : [<s:property value="%{#ctr1.index}"/>]
<br/> setTwo position : [<s:property value="%{#ctr2.index}"/>]
<br/>
</s:if>
</s:iterator>
</s:iterator>
使用单个迭代器和Set.contains(Object):
<s:iterator value="setOne" var="first" status="ctr1">
<s:if test="%{setTwo.contains('#first')}">
Common value detected : [<s:property value="%{#first}"/>] <br/>
</s:if>
</s:iterator>
使用单个迭代器和纯OGNL:
<s:iterator value="setOne" var="first" status="ctr1">
<s:if test="%{#first in setTwo}">
Common value detected : [<s:property value="%{#first}"/>] <br/>
</s:if>
</s:iterator>
没有迭代器,仅使用OGNL List Selection(感谢@AleksandrM代码):
<s:property value="setOne.{? #this in setTwo}"/>
答案 1 :(得分:0)
尝试以下代码:
<s:iterator var="val1" value="set1">
<s:iterator var="val2" value="set2">
<s:if test="#val1 == #val2">
<s:property /><br>
</s:if>
</s:iterator>
</s:iterator>
答案 2 :(得分:0)
试试这个。我认为这对你有用。如果没有,那么做一些试验&amp;这个错误。
<s:iterator value="set1" var="first">
<s:iterator value="set2" var="second">
<s:set name="valueofset1" value="%{#set1.index}" />
<s:set name="valueOfSet2" value="%{#set2.index}" />
<s:if test="valueofset1 == valueOfSet2">
//Do what ever you want
</s:if>
</s:iterator>
</s:iterator>