首页 > 代码库 > struts2返回json数据

struts2返回json数据

如果要让Action返回JSON类型,需要在在package的extends属性修改为json-default,一旦为Action指定了该结果处理类型,JSON插件就会自动将Action里的数据序列化成JSON格式的数据, 并返回给客户端物理视图的JavaScript。

1,在返回的json对象必须在action中有get方法;
2,使用<param name="includeProperties">,后跟的对象,数组,集合或者属性在action中有get方法
3,如果使用<param name="includeProperties">后跟数组或者集合,必须指定(.属性)或者(.对象),否则得到数据可能是空[](因为struts好像不识别这种json格式);也不能跟* 号,这个只是获取到个数,但每个都是[]空;


如果action的属性很多,我们只想要从Action一部分或者一类属性到页面, 这个时候通过result节点后面添加出参数includeProperties或excludeProperties即可。includeProperties指定要包含的属性,而excludeProperties是排除属性,这两个属性都可以通过正则表达式来指定属性。 如:

<struts> 
<package name="default" extends="json-default"> 
<action name="person" class="com.person.PersonAction" method="view"> 
<result type="json"> 
<param name="includeProperties"> 
person\.name,persoon\.age,person\.gender 
</param>> 
</result> 
</action> 
</package> 
</struts>

但是如果返回的对象是一个数组格式的Json数据。比如peson Bean中有对象persion1...person9,而我只要person1的json数据,则可以用如下的正则表达式。

<struts> 
<constant name="struts.objectFactory" value="http://www.mamicode.com/spring"/> 
<include file="struts-admin.xml"></include> 
<package name="default" extends="json-default"> 
<action name="person" class="com.person.PersonAction" method="view"> 
<result type="json"> 
<param name="includeProperties"> 
person\[\d+\]\.person1 
</param>> 
</result> 
</action> 
</package> 
</struts>


excludeProperties拦截器的用法与此类同,如果拦截的仅仅是一个对象,如果拦截掉person Bean的整个对象,使用如下配置

<struts> 
<constant name="struts.objectFactory" value="http://www.mamicode.com/spring"/> 
<include file="struts-admin.xml"></include> 
<package name="default" extends="json-default"> 
<action name="person" class="com.person.PersonAction" method="view"> 
<result type="json"> 
<param name="excludeProperties"> 
person 
</param>> 
</result> 
</action> 
</package> 
</struts>


------------------------下面的测试不成功------------------------------------

<action name="seljsons" class="tbaction" method="getJsonGrids">
<result type="json">
</result>
</action>
没有找到如何通过struts传送json
++++++++++++++++++++++++++++++++++++++++++++++++++++++
<action name="seljsons" class="tbaction" method="getJsonGrids">
    <result type="json">
    <param name="root">stjson</param>
    </result>
</action>
后台使用字符串的结果是:
"[{\"currentpage\":2,\"size\":10,\"totalpage\":1,\"totlecount\":1},{\"currentpage\":22,\"size\":10,\"totalpage\":3,\"totlecount\":21},{\"currentpage\":32,\"size\":10,\"totalpage\":4,\"totlecount\":31}]"
中间有反斜杠(转义)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
------------------------------------------------------------------------------

本文出自 “东方小阁” 博客,请务必保留此出处http://lailai.blog.51cto.com/3362373/1559030

struts2返回json数据