struts2 if 标签比较2个变量 的 问题

Action 中有 2个变量 一个是 kindId 一个是 mainKind1 (它里面有个 集合属性叫 sons)

现在在 jsp中 :

[code="java"]


id="sub"/s:if>
|

/s:iterator
[/code]

这时候 是可以的 就是 mainKind1 id号等于 25的那个儿子 满足条件 。下面这种写法也可以正常工作:
[code="java"]
id="sub"/s:if
[/code]

现在 问题是 那个 25是动态的 ,应该 是 [code="java"]id="sub"/s:if[/code]

其中id是 son的 id ,kindId 是 Action中的 那个 kindId

我排列组合了 多种 # , % 都不行 。我用的是 struts2.0.11 不支持 $

哪位帮忙指点一下。多谢
[b]问题补充:[/b]
Action 中有 2个变量 一个是 kindId 一个是 mainKind1 (它里面有个 集合属性叫 sons)

现在在 jsp中 :

<s:iterator value="mainKind1.sons" id="son" status="st">    
         <a href#" target="" <s:if test="%{id==25}">id="sub"</s:if>>
                 <s:property value="name"/>|<s:property value="id"/>
         </a>
</s:iterator>

这时候 是可以的 就是 mainKind1 id号等于 25的那个儿子 满足条件 。下面这种写法也可以正常工作:

<s:if test="#son.id==25">id="sub"</s:if>

现在 问题是 那个 25是动态的 ,应该 是

<s:if test="%{id==kindId}">id="sub"</s:if>

其中id是 son的 id ,kindId 是 Action中的 那个 kindId

我排列组合了 多种 # , % 都不行 。我用的是 struts2.0.11 不支持 $

哪位帮忙指点一下。多谢

火星说的 :

  1. id="sub"/s:if

我试验了不行 。 if 里面的没有被执行 !
[b]问题补充:[/b]
火星 :

我照你说的打印了



发现 action中 kindId = 15

而 如果 把

放在 循环之外 : 如果是 前面 则 正确显示 22 否则 就不显示 22

因为 son 里面也有个属性 叫 kindId

[b]问题补充:[/b]
上面说错了 action中 kindId=22

进入循环或循环之后 kindId = 15
[b]问题补充:[/b]
确实 改了 。

son 有个属性 叫 kindId

action中我 return success 上一行打印还是 22内。

循环之前在 jsp中也打了是 22

进入循环后就变成 15了。[code="java"] %%%


id="sub"/s:if >
|
$ $


/s:iterator[/code]
[b]问题补充:[/b]
太感谢了成功了 !

改名后就可以了

这样试试:

[code="jsp"]id="sub"/s:if [/code]

那你分别输出%{#attr.son.id}和%{#attr.kindId},看看是不是一样的

循环怎么会修改kindId值呢?

那就把action里面的那个kindId属性改名,或者在jsp页面循环前给它设个别名。

可以在循环上面给kindId设个其他的名字,比如kindIdTmp:

[code="jsp"][/code]

然后循环里面这样比较:

[code="jsp"]id="sub"/s:if[/code]