includeProperties不工作?

时间:2014-01-04 08:47:54

标签: java jsp struts2 struts2-json-plugin

struts.xml中:

<action name="findTspNameIdMap"
            class="cdot.oss.cmsat.gma.struts.ConfigureTspThresholdAction" method="findTspNameIdMap">

            <result name="success" type="json">
                <param name="includeProperties">result,tspNameIdMap.*</param>   
            </result> 

            <result name="error">pages/Error.jsp</result>

        </action>

行动类:

public class ConfigureTspThresholdAction extends ActionSupport implements SessionAware, ModelDriven<GmaThresholdParameter>{


    private Map<String,Object> session;
    private String operatorId;

    private Map<String,String> tspNameIdMap;
    private String result = "success";

    //private List<String> thresholdParameters;
    GmaThresholdParameter gmaThresholdParameters = new GmaThresholdParameter();

当我在Firebug中检查JSON响应时,我对该操作进行了AJAX调用:{}。 但是,如果我<param name="root">tspNameIdMap</param>它有效,但不是includeProperties

早些时候它正在运行,但我做了一些代码更改(与上面的部分代码无关),它停止了工作。代码更改包括为POJO实施ModelDriven

为什么不工作?有什么帮助吗?

2 个答案:

答案 0 :(得分:3)

<强>解决:

<强> struts.xml中:

   <result name="success" type="json">
        <param name="root">action</param>         
        <param name="includeProperties">result,tspNameIdMap.*</param>   
    </result-type>

我在代码中添加了<param name="root">action</param>,它解决了问题。

请参阅我解决的链接:http://blog.mattsch.com/2011/04/14/things-discovered-in-struts-2/

  

从Struts 2.2.3开始,如果动作是模型&gt;驱动,则根对象始终被认为是模型。这意味着在创建JSON请求时,只会对模型进行序列化。在某些情况下,可以使用模型驱动来接收请求并在&gt;响应中发送其他内容。然后必须更改根对象。这可以通过设置root&gt;参数来完成,如上所示。

答案 1 :(得分:0)

使用

<result name="success" type="json">      
    <param name="includeProperties">result,tspNameIdMap*.*</param>   
</result-type> 

不需要以下param,我发现有和没有这个

的结果相同
<param name="root">action</param>