Struts2.0.11.1 s:if test 标签问题
环境:
Tomcat6
JDK6
Struts2.0.11.1
代码:
L1: <s:set name="portOper" value="#parameters.portOper"/>
L2: <s:property value="#portOper" />a
L3: <s:if test="#portOper == '1'">
L4: Enter name of port to activate (* = all):
L5: <s:property value="#portOper" />b
L6: </s:if>
问题:
第一行用set压入一个值,第二行获取此值显示,可以显示为“1a”,表示“portOper”的值为“1”。
但是第三行的test,试过多种写法,test却总为false,不进入第四行
如果将第三行改为“<s:if test="#portOper != null">”,则可以进入第四行,且第五行显示为“1b”,表示也拿到了portOper的值,为“1”
请帮忙看下,Struts2.0.11的tag不再允许嵌套使用EL表达式,全面使用OGNL。 不知道是否有什么关系?
------解决方案-------------------- 会不会是类型不对 不要用int型 用字符型试下
------解决方案-------------------- <s:if test="portOper == 1">
------解决方案-------------------- 应该可以的,一般都是这样写的.关注...........
------解决方案--------------------
感觉value应该这么取.
<s:set name="portOper" value="#parameters.portOper[0]"/>
#parameters.id[0]作用相当于request.getParameter("id")
------解决方案--------------------
抱歉,经过再次分析,这不是struts2的bug。一个很容易错误应用的问题。
<s:if test="deptType==1" >下属</s:if>如果你的数据库对应的字段类型为整形,可以这样使用;
<s:if test="deptType=='1'" >下属</s:if>如果你的数据库对应的字段类型为char,可以这样使用;
<s:if test="deptType=='aa'" >下属</s:if>如果你的数据库对应的字段类型为varchar,并且数据库中的字符串都是多余一个字符的字符串,可以这样使用;
<s:if test="deptType==\"1\"" >下属</s:if><s:else>直属</s:else>(测试通过,这样用是最正确的)
------解决方案-------------------- 这里纠正一点--13楼wmj2003的方法是正确的.
开始IDE出现警告没去试,后来再Struts2网站的FAQs一栏中找着了解决方法
Why won't the 'if' tag evaluate a one char string
嘿嘿,楼主可以结贴了吧
------解决方案-------------------- 引用楼主 phoenix_zd 的帖子: 环境: Tomcat6 JDK6 Struts2.0.11.1 代码: L1: <s:set name="portOper" value="#parameters.portOper"/> L2: <s:property value="#portOper" />a L3: <s:if test="#portOper == '1'"> L4: Enter name of port to activate (* = all): L5: <s:property value="#portOper" />b L6: </s:if> 问题: 第一行用set压入一个值,第二行获取此值显示,可以显示为“1a”,表示“portOper”…
------解决方案-------------------- 最正确的判断方法是:
Java code
<s:if test="%{extendedField2 == \"Y\"}">
【需要修改】
</s:if>
<s:else>
[审核中]
</s:else>