环境:
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
嘿嘿,楼主可以结贴了吧
------解决方案--------------------
------解决方案--------------------
最正确的判断方法是:
- Java code
<s:if test="%{extendedField2 == \"Y\"}"> 【需要修改】 </s:if> <s:else> [审核中] </s:else>