<s:set name="age" value="'29'"></s:set>
<s:property value="age"/>
当value是常量的时候请注意用 ‘’ 号;
在用struts2做项目中总要遇到关于其标签的问题,我总也用不好struts2的标签。
今天把前几天在项目中用到的<s:if><s:set>标签跟大家分享一下。
先给大家贴代码出来,在后面在具体介绍。
<s:set name="status" value="modStatus"/>
<s:if test="#status == 0 ">
<s:text name="mod.control.start"/>
</s:if>
<s:elseif test="#status == 1 ">
<s:text name="mod.control.stop"/>
</s:elseif>
<s:else>
<s:text name="mod.control.uncertain"/>
</s:else>
向上面这段代码,我在用的时候也,消耗的很长时间,才把它做对。"modStatus"是一个链表中对象的属性,比如<s:iterator value="ModList" status="rowstatus">,中ModList是一个存放对象(ModManaget)的list,那么“modStatus”是“ModManaget”的属性,我们在用的时候不能够通过struts2的<s:property value="modStatus">标签来得到modStatus的值,比如向这样<s:set name="status" value="<s:property value="modStatus"/>"/>是错误的,因为struts2中不允许在struts2的标签中再用struts2的标签。你可以在html的标签中用struts2的标签,比如:<input type="text" name="id" value="<s:property value="modStatus"/>"/>就可以得到正确的值。
关于上面的代码还有一点需要说明的,就是“modStatus”是从数据库中查出来的String类型,但我们在比较时,我们不能够像这样写 <s:if test="#status == ‘0’ ">或 <s:if test="#status == “0” ">像这样写会出现错误的逻辑。还要注意的就是<s:if test="#status == 0 ">中“status”前只能够加"#"不能够加“%“等其它符号。
希望对大家有所帮助。