struts标签set和if的问题
代码如下:<s:set name="a" value="%{#parameters.a}" />
<li><s:property value="#a"/></li>
<s:if test='%{#a=="0"}'>
<li>Hello</li>
</s:if>
第一个li标签可以输出a的值为0,为什么在s:if中一直判断不了相等,无法输出Hello li标签。查了网上的说法是#parameters得到的属性值都是String类型,我传过来的a也是String类型的,无法判断相等是怎么回事?有没有哪位大神知道的? struts tag set if --------------------编程问答-------------------- 改为<s:if test='${a eq "0"}'>
字符串能==比较吗? --------------------编程问答--------------------
这样写的话还是会出现问题:
According to TLD or attribute directive in tag file, attribute test does not accept any expressions。好像是test里面的表达式无法被接受。 --------------------编程问答-------------------- 不好意思,el表达式比较不需要引号,改为<s:if test='${a eq 0}'> --------------------编程问答-------------------- 还是不行的。一样的问题。 --------------------编程问答-------------------- struts2标签中是不能使用el表达式的
<s:set name="a" value="#parameters.a" />
<li><s:property value="#a"/></li>
<s:if test='#a=="0"'>
<li>Hello</li>
</s:if>
不要用%计算表达式试试 --------------------编程问答-------------------- %{#parameters.a} 得到的值有没有空格 你去看看 如果有空格的话肯定不能等于0了 --------------------编程问答--------------------
不报那个错了,但是依然打印不出那个Hello <li>标签 --------------------编程问答--------------------
有没有空格怎么查看?在<s:debug>中也只是显示数据,看不出有没有空格的吧。 --------------------编程问答-------------------- <s:set name="a" value="#parameters.a" />
<li><s:property value="#a"/></li>
<s:if test='#a.trim()=="0"'>或者 <s:if test='#a.trim().equlas("0")'>
<li>Hello</li>
</s:if>
--------------------编程问答--------------------
用楼上的方法吧
或者你可以在#parameters.a之前在后台trim一下
补充:Java , Java EE