Struts-JSON

struts-json的使用:

1.package 需继承 json-default

2. action 设置type="json"

在项目中,可以配置一个 global-result,在需要返回json的action中,return对应的name即可。

一些设置:

a.action中的设置:

1.struts的json支持,默认是通过所有的getXXX() 方法转json,所以在action中,最好不要将 method 命名为getXXX。对于命名为 getXXX的不需要转为json的属性,可以在 get 方法上加注解来忽略该方法。

@JSON(serialize="false"

2.对于需要重命名的属性,例如action中为 aaa,对应方法为 getAaa(),但我希望转为json后key不要是aaa,而是bbb。同样可以通过get方法上加注解在实现。

@JSON(name="bbb")

3.对日期等值的格式化。当页面需要显示一个日期时,如果直接将Date转为json传到页面,会显示为1700年以来的毫秒数,这显然不是我们想要的,如果将毫秒数在前天转化,实现起来也稍微麻烦一些。struts在这里给我们提供了方便。

@JSON(format=”yyyy-MM-dd“)

b.struts.xml中的配置

在struts.xml中配置,可以避免污染代码,在适当的情况下,也是很好的选择。

<result name="json" type="json">
  <param name="wrapPrefix">/*</param>
  <param name="wrapSuffix">*/</param>
</result> 

这里的param 允许的name有:

root                                                 根节点

inclideProperties                         包含的属性[逗号分割,正则表达式的形式表示]

execludeProperties                     排除的属性[……]

excludeNullProperties                是否排除Null值

igoreHierarchy                              是否忽略层级,当为true时,可以同时将super class中有get方法属性一起转换

noCache                                        


更多参数及设置:点击这里


最后来说说我碰到的bug:

我需要将一个datas对象返回到页面,datas 包含一些分页属性,排序属性 和 一个包含数据的List集合。 转换时,分页属性和排序属性都可以正常转,但是返回结果中 list 却全部为 null ,怎么写root 、include 都不行。 最后发现是因为 使用的powerdesigner生成的 bean 对象中的方法有问题。

另一bug,用户列表翻到某些页时内存溢出。跟踪发现因为返回结果总有 用户操作日志 和 用户全选 两个数组内数据量过大而且是对列表是无意义的数据。尝试 serialize=false来禁止序列化,操作日志禁止成功,但 getAuthorities() 仍然被序列化,且getAuthorities() 是spring-security 所需要实现的方法,不能改名。在struts.xml中配置:

<param name="excludeProperties">			<!-- 需要排除的属性 -->
					datas\[\d+\]\.password,
					datas\[\d+\]\.authorities
				</param>
成功过滤多余的属性。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值