日期:2014-05-18  浏览次数:20659 次

<s:iterator>中的bug,大家说说怎么解决或避免;
<s:iterator value="{'a','b','c'}" >
<s:property />
</s:iterator>
这样正确输出a b c没问题;
如果这样:
<s:iterator value="{'a','b','c'}" var="test">
<s:property value="test"/>
</s:iterator>
输出就报类型转换错误;
java.lang.ClassCastException: java.lang.Character cannot be cast to java.lang.String
也就是说当你var存储list中的元素时,
他给你存的是Character型,而取出来的时候必须要是String,因此报空指针;

可是第一个又不出问题;这个如何解释;

PS:
<s:iterator value="{'aaa','bbb','cccc'}" var="test">
<s:property value="test"/>
</s:iterator>
输出aaa,bbb,ccc没任何压力
struts2版本:2.3.14


iterator标签的bug

------解决方案--------------------
我估计是单个字符的字符串当成了Character类型,第二种情况很明显是字符串了啥<s:iterator value="{'aaa','bbb','cccc'}" var="test">,这四我的理解
------解决方案--------------------
<s:iterator value='{"a","b","c"}' var="test">
<s:property value="test"/>
</s:iterator>
这样就可以了……  把双引号和单引号反一下。
------解决方案--------------------
<s:iterator value="{'a','b','c'}" var="test">
她把里面的元素全部看成char类型了,而输出的<s:property value="test"/>都会转化为String 输出。。
不能改源码,所以改成双引号。。  之前深受其害。。