不知道有没有人遇到过这种问题,使用struts的标签generator生成字符串数组之后,好像必须需要内边内嵌一个iterator进行遍历。
这样经常有问题就是generator生成的是org.apache.struts2.util.IteratorGenerator类型,而不是List。
本人偶然的发现了个转换方法,下面直接上代码,分享一下:
假设:
stackContext中#questions的数据的json格式如下:
[
{
"aAnswer": "Davy does not have a pet.##Davyls pet disappears.##Davyls pet turned into a butterfly.",
"aId": 5464,
"opOptions": "19248-Davy does not have a pet. _19250-Davyls pet turned into a butterfly._19249-Davyls pet disappears.",
"qId": 5466,
"qQuestion": "Main Characters: Davy and Caty Settings: Kidsl Club",
"qtId": 1195,
"qtInstruction": "qtInstruction.",
"qtKnowId": 740,
"qtStyle": 8
}
]
页面局部如下:
<s:property value="#questions[0].aAnswer" /><br/>
<s:generator var="answers" separator="##" val="#questions[0].aAnswer"/>
<s:property value="#answers" />--><s:property value="#answers.getClass()" /><br/>
<s:property value="#answers.toString()"/>--><s:property value="#answers.toString().getClass()" /><br/>
<s:property value="#answers.{#this}" />--><s:property value="#answers.{#this}.getClass()" /><br/>
<!-- 惊奇而又惊喜的发现,#answers虽然是org.apache.struts2.util.IteratorGenerator类型
但投影操作之后: #answers.{#this}
或者 #answers.{#this.toString()}
却都是 java.util.ArrayList类型
-->