基本的流程控制.'If'标签可单独使用也可以和'Else If'标签和(或)一个多个'Else'一起使用.
名称 | 必填 | 缺省值 | 类型 | 描述 |
---|---|---|---|---|
test | true | Boolean | 决定If标签内容是否显示的表达式 | |
id | false | Object/String | 所指元素的Id. 对于UI和form标签此Id就作为所对应的html标签的id属性 |
Example:
<s:if test="%{false}">
<div>Will Not Be Executed</div>
</s:if>
<s:elseif test="%{true}">
<div>Will Be Executed</div>
</s:elseif>
<s:else>
<div>Will Not Be Executed</div>
</s:else>
Notice:
test条件中如果是比较字符串的话:
我通过网上搜索都给出这样的表达式:
例如:
<s:set name="isok" value="#isok"/>
<s:property value="#isok"/> 此处已经打印出结果是 Y
<s:if test="#isok=='Y'">
yes
</s:if>
<s:else>
no
</s:else>
或者:
<s:iftest='%{isok=="Y"}'>
yes
</s:if>
<s:else>
no
</s:else>
但是我在自己代码中测试两种代码都不能正确判断,每次结果输出还是no
经过不断调试,发现把判断语句改成
<s:iftest='%{customervo.country==Y}'> ,去点Y上的双引号,居然成功!
哎,就这样吧,下次大不了多试几次。
2010-10-18 新情况
通过action 传出参数 favor=1时候 能正确打印出yes
<s:if test="%{favor==1}">
yes
</s:if>
<s:else>
no
</s:else>
但是相同条件下传出参数 favor=T 时,却打印出来的是 no ,给T加上单引号还是输出 no,这个难道是struts2 tag的bug,值得查查资料。
<s:if test="%{favor==T}">
yes
</s:if>
<s:else>
no
</s:else>