strusts2_json

本文深入解析Struts.xml配置中extends='json-default'的作用,并详细阐述如何利用result参数进行json数据定制输出,包括includeProperties、excludeProperties等参数的应用。同时,文章还介绍了如何对json结果进行特殊处理,如序列化、反序列化和日期格式化。

引用别人的

Struts.xml
<package name="default" extends ="json-default" >
<action name="fieldManage_*" method="{1}" lass="fieldManageAction">
        <result type="json">
            <param name="includeProperties">totalCount,data.*</param>
        </result>
        <result name="operaFieldmanage" type="json">
            <param name="includeProperties">success</param>
        </result>
        </action>
</package>
extends=”json-default”这边必须这样设置才能处理json。
1.<action name="test" class="com.TestAction" method="test">  
  <result type="json" /><!--将action的bean属性以json字符串返回浏览器-->  
  </action>
2.只要继承extends="json-default",json拦截器是默认配置上的,可以不配。result设置成json之后,容器会把 action的属性自动封装到一个json对象中(json拦截器来做),然后调用js的callback方法. 返回json数据
3.如果按照1中的配置。你会发现前台返回的json字符串,是把action中的所有属性全部转化为json字符串返回给浏览器了(甚至有时候返回不了 结果,也不报错,后台执行了,但前台执行不到callback function),但是我们有时候需要根据实际情况返回部分结果,如何对json的结果 进行定制输出呢?result提供了一些参数替你解决这个问题,一般情况下用的最多的就是includeProperties 参数和 excludeNullProperties参数。当然还有其他的方法,如给pojo的属性加json注解。
   【有问题4.includeProperties 参数:输出结果中需要包含的属性值,这里正则表达式和属性名匹配,可以用“,”分割填充多个正则表达式。这个参 数直接返回对象的json数据,前台不需要eval转换,<param name="root">result</param> 则不同,需要前台进行eval转换
5.excludeProperties 参数:输出结果需要剔除的属性值,也支持正则表达式匹配属性名,可以用“,”分割填充多个正则表达式,类同includeProperties
6.对一些属性的特殊处理可在action代码中去特殊的序列化,如:
[6.1]默认情况下以get方法开头的都会序列化,如果不想序列化,在action中的方法要打上注解
@JSON(serialize=false)

[6.2]如果在属性get方法上面加@JSON(name="newName"),则返回的json数据中名称是指定的新名称

[6.3]@JSON(format ="yyyy-MM-dd'T'HH:mm:ss")设置用于格式化输出、解析日期表单域的格式。

[6.4]@JSON(deserialize=true)设置是否反序列化该属性

转载于:https://www.cnblogs.com/luotuoke/p/4595236.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值