struts2中使用json时传对象值为空的情况

          使用过struts2中struts2-json-plugin-2.1.8.1.jar等系列工具时,不知道有没有遇到过有的action中的属性对象传到前台是没有值的现象。我在最近的项目中遇到了,使用json传值问题,在网上找到了问题的原因,现在自己在总结下,作备份。

          struts2中使用json先在web应用中加入struts2-json-plugin-2.1.8.1.jar,更改struts.xml配置文件,把<package>标签属性extends属性值改为json-default,result的type属性值为json像下面的:

<package name="mypack" extends="json-default" namespace="/t">
	<action name="test" class="***Action" >
		<result name="success" type="json">.....</result>
</action></package>

         我们知道result的type为json时有两个实用属性includeProperties和excludeProperties,是指生成json包括的属性和不包括的属性(一般只用一个就行了,不知道两个都用有什么意义),用法如下:

<result name="success" type="json">
         <!-- pro1,pro2,pro3为***Action类中的属性名-->
	<param name="includeProperties">pro1,pro2,pro3</param>
</result>

这样就会生成{pro1:val1,pro2:val2,pro3:val3}格式的json对象。这只是对pro1,pro2为pro3为基本类型的时候有效,如果不是的话,那就会是没有值。解决办法,在网上找了下有以下解决方法:

一、也是最简单的方法,不要使用includeProperties,使用excludeProperties把不要的属性去掉。

二、有点烦,使用includeProperties,但是要使用正则表达式来指定json中要传的数据,下面看例子:

1、如果属性为一个实体对象,如User,定义属性有 id,name,password,age,***Action中有属性User user,传json user的话

<param name="includeProperties">user\.id,user\.name,user\.password</param>
<!--这样只会传三个user的属性,想传几个就写几个-->
        2、如果是一具List的话,***Action中有属性List<String> list,传json list的话

<param name="includeProperties">list\[\d+\]</param>
<!--这里的list里面的元素是String类型的,list后面是一个正则表达式,相当于取出list的每个元素-->
         3、List里面的元素是一个对象的话,就有点复杂了,如
<param name="includeProperties">list\[\d+\]\.id,list[\d+\]\.name</param>
lt;!-- List<User> list,list里的元素是User对象 -->;
         第二种方法这么烦,写的又多,还不如使用excludeProperties了,不过要是只想传对象中特定的属性的话,第二种方法就比较有用了,不过传多了也不犯法,还是用excludeProperties属性吧。 害羞


          

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值