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
。
为什么不工作?有什么帮助吗?
答案 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>