Struts 2 includeProperties不起作用,但root适用于json结果类型

时间:2011-08-04 21:34:23

标签: json struts2

我发布这个是因为我通过谷歌搜索了另一个遇到同样问题但未提及解决方案的人。它在另一个帮助网站上,所以我不知道发布此类链接的政策是什么,但如果需要,我可以使用它。

所以我的问题是这样的:

    <action name="CountQuery" class="info.pureshasta.action.QueryAction" method="countQuery">
           <result name="success" type="json">
             <param name="root">
                countResults
             </param>
           </result>
           <result name="input">SetupQuery</result>     
    </action>

完全符合我的要求。也就是说,它返回一个JSON对象,该对象仅包含countResults(恰好是整数)属性。阅读plugin documentation我认为includeProperties将是我想要的,特别是如果我最终想要两个属性而不是我的JSON对象中的一个属性。我对此的尝试是这样的:

        <action name="CountQuery" class="info.pureshasta.action.QueryAction" method="countQuery">
           <result name="success" type="json">
             <param name="includeProperties">
                countResults
             </param>
           </result>
           <result name="input">SetupQuery</result>     
    </action>

任何人都知道在任何情况下会出现这种情况吗?在后一种情况下,我错过了countResults的前缀吗?当我使用后一种情况运行我的应用程序时会发生什么情况,我获得了与我的Action相关的所有属性,而不仅仅是我想要的属性。

1 个答案:

答案 0 :(得分:2)

所以我今天早上打开我的电脑,将root恢复到includeProperties,并且你知道这些糟糕的事情。我在javascript版本中的输出是

{"countResults", 10078467}

我已经进行了双重检查和三重检查,上面的struts.xml片段完全相同。

对于任何未来的读者,当我使用root而不是includeProperties时,我得到了

10078467

我猜这是每种情况下的预期行为。在我需要更多属性之前,root实际上对我来说效果更好,因为我可以直接使用该值而不必在json对象中查找它(保存1步,多么懒!)

所以我猜这是一个缓存问题?我注意到,当我在过去一天使用jquery / struts2 / json组合时,Web应用程序显示缓慢以显示更改。