2012-01-10 54 views
1

我已经simplfied我的代码,使其easiear明白:支柱2映射返回列表/集合作为JSON

我有一个动作类

public class MyAction extends ActionSupport { 
    private BigClass item; 

    public String myMethod(){ 
    //call some services 
    this.item = processedStuff; 
    return SUCCESS; 
    } 

} 

和大类有一个数组中它:

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结果,我只得到信息数据1和数据2,阵列没有返回..但是 如果我改变

item\.dataArray\[\d+\]\.id, 
item\.dataArray\[\d+\]\.name 

item\.dataArray.*, 

我得到的所有信息,我需要。 是不是表达式item\.dataArray\[\d+\]\.id不正确?

回答

0

请参阅本answer,这拒绝Suggestion :(
并确保您的OGNL表达式是正确的,无论是语法和逻辑。
“项目\ .dataArray \ [\ d + \] \ ID” 是语法正确,它会得到如item.dataArray [0] .id,item.dataArray [1] .id,item.dataArray [2] .id等值。

+1

嗨,这很久以前。我无法像现在这样工作。我所做的就是使用item \ .dataArray。*,然后排除我不需要的属性:/ – Kossel 2012-06-11 15:52:38

+0

@Kossel“excludeProperties”覆盖“includeProperties”,因此您的解决方案可以工作。我只是对MyBean和json结果感到好奇。也许你可以通过使用可行的解决方案向我们展示json结果。 – 2012-06-12 01:32:15

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>