我简化了我的代码,使其易于理解:
我有一个动作类
public class MyAction extends ActionSupport {
private BigClass item;
public String myMethod(){
//call some services
this.item = processedStuff;
return SUCCESS;
}
}
和BigClass中有一个数组:
public class BigClass{
private String data1;
private String data2;
private List<MyBean> dataArray=new ArrayList()<MyBean>;
//setters and getters ...
}
和strut.xml映射
<result name="success" type="json">
<param name="includeProperties">
item\.data1,
item\.data2,
item\.dataArray\[\d+\]\.id,
item\.dataArray\[\d+\]\.name
</param>
</result>
作为json的结果,我只获取信息data1和data2,数组没有返回.. 但是,如果我改变
item\.dataArray\[\d+\]\.id,
item\.dataArray\[\d+\]\.name
到
item\.dataArray.*,
我得到了我需要的所有信息。
表达式item\.dataArray\[\d+\]\.id
是不正确的?
答案 0 :(得分:1)
在struts.xml中添加额外的两行item\.dataArray,
item\.dataArray\[\d+\],
可以解决问题。我也在下面展示了它。
<result name="success" type="json">
<param name="includeProperties">
item\.data1,
item\.data2,
item\.dataArray,
item\.dataArray\[\d+\],
item\.dataArray\[\d+\]\.id,
item\.dataArray\[\d+\]\.name
</param>
</result>
答案 1 :(得分:0)
请参阅此answer,这被拒绝Suggestion :(
并确保您的OGNL表达在语法和逻辑上都是正确的
“item \ .dataArray \ [\ d + \] \ .id”在语法上是正确的,它将获得诸如item.dataArray [0] .id,item.dataArray [1] .id,item.dataArray [2]之类的值。 id等等。