问题描述
我正在使用 struts 2 jquery 插件选择组件.
I am using struts 2 jquery plugin select component.
动作是:
SampleAction { private List<SampleVO> samples; //With setters and getters private List<AnotherVO> anotherList; //With setters and getters private String anString; //With setters and getters @Action(value = "/loadSelect", results = { @Result(name = "success", type = "json")}) public String loadSomeSamples() { samples = new ArrayList<SampleVO>(); //Put some object in samples. return SUCCESS; } }
jsp是
<sj:select list="samples" />
问题在于 json 插件会序列化所有正在运行的属性(anotherList、anString 等...),如下所示
The problem is that the json plugin will serialize all the properties in action ( anotherList, anString etc...), as below
{ "samples": { "0": {"property":"a"}, "1": {"property":"b"}, "2": {"property":"c"} }, "anString": "hello", "anotherList": { "0": {"prop1":"a","prop2":"b"}, "1": {"prop1":"c","prop2":"d"} } }
如果我将 json root 参数更改为 samples,那么 js:select 将无法工作,因为它找不到任何名为返回的 json 中的 samples.返回的json是:
If I change the json root parameter to samples, then the js:select will not work as it can not find any list named samples in the returned json. The returned json is:
{ "0": {"property":"a"}, "1": {"property":"b"}, "2": {"property":"c"} }
这可以解决吗?!有什么办法可以配置struts 2 json插件来生成
Can this be fixed ?! Is there any way I can configure struts 2 json plugin to generate
{ "samples": { "0": {"property":"a"}, "1": {"property":"b"}, "2": {"property":"c"} } }
或者为什么struts 2 jquery插件接受简单的json数组
Or is there any why struts 2 jquery plugin in accept the simple json array
推荐答案
您可以使用 includeProperties 参数来获取 json 结果.例如
You can use includeProperties parameter to json result. For example
@Result(type="json", params = {"includeProperties", "samples.*" })
再来一个样本
@Result(type="json", params = {"root", "samples", "wrapPrefix", "{"samples":", "wrapSuffix", "}"})