博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2使用json中要注意的几点
阅读量:5879 次
发布时间:2019-06-19

本文共 1967 字,大约阅读时间需要 6 分钟。

1.引入包

struts2-json-plugin-2.1.8.1.jar  json-lib-2.1.jar  commons-collections-3.2.1.jar  commons-beanutils-1.8.2.jar  commons-lang-2.4.jar  ezmorph-1.0.6.jar,其他的包略,这几个包是返回json形式的数据必须的

2.struts配置

<package name="default" extends="json-default">

3.action配置

<action name="test" class="com.TestAction" method="test">  

  <interceptor-ref name="json" /><!--处理以JSON文本提交的请求-->  
  <result type="json" /><!--将action的bean属性以json字符串返回浏览器-->  
  </action>
4.包的配置

只要继承extends="json-default",json拦截器是默认配置上的,可以不配。result设置成json之后,容器会把 action的属性自动封装到一个json对象中(json拦截器来做),然后调用js的callback方法. 返回json数据<package name="test" namespace="/test" extends="struts-default,json-default">

5.如果按照 3中的配置

你会发现前台返回的json字符串,是把action中的所有属性全部转化为json字符串返回给浏览器了(甚至有时候返回不了结果,也不报错,后台执行了,但前台执行不到callback function),但是我们有时候需要根据实际情况返回部分结果,如何对json的结果进行定制输出呢?result提供了一些参数替你解决这个问题,一般情况下用的最多的就是includeProperties 参数和excludeNullProperties参数。当然还有其他的方法,如给pojo的属性加json注解。

6.includeProperties 参数

输出结果中需要包含的属性值,这里正则表达式和属性名匹配,可以用“,”分割填充多个正则表达式。这个参数直接返回对象的json数据,前台不需要 eval转换,<param name="root">result</param>则不同,需要前台进行eval转换

如:输出person的所有属性
<result type="json">  
   <param name="includeProperties">person.*, person\.name</param>  
</result>
7.excludeProperties 参数

输出结果需要剔除的属性值,也支持正则表达式匹配属性名,可以用“,”分割填充多个正则表达式,类同includeProperties

8.输出一个JSON List列表
<action name="list" class="testAction" method="list">    
<result name="success" type="json">
<param name="includeProperties">
list\[\d+\]\.Id,list\[\d+\]\.user\.userName
</param>
</result>       
</action>  
其中list是action中的一个List类型的属性
list\[\d+\]\.Id表示,list中存储的对象0..end的Id属性(list中存储的对象必须有Id属性)。
list\[\d+\]\.user\.userName就表示list中的对象中的user对象的userName属性

9.为什么要用includeProperties或者excludeProperties 参数

主要是为了过滤掉接口,pojo的set、list、其他对象等不需要的数据防止循环取其他对象或找不到。如果不配置,默认是处理action中的所有属性,如果action中有接口注入,json拦截器可能找不到返回不了结果,还有如果action中有一个对象,这个对象与好多对象都有关联,json拦截器会将相关联的所有对象的属性全部转换成json格式,如果其他对象有list、set,其返回结果...有可能是死循环,无法返回10.总结action中避免使用get开头的action方法,去掉action中的接口的get方法为json类型的result配置includeProperties, excludeProperties等参数.

转载地址:http://kmdix.baihongyu.com/

你可能感兴趣的文章
js replace,正则截取字符串内容
查看>>
Thinkphp5笔记三:创建基类
查看>>
查询反模式 - GroupBy、HAVING的理解
查看>>
Android中EditText,Button等控件的设置
查看>>
TextKit简单示例
查看>>
网格最短路径算法(Dijkstra & Fast Marching)(转)
查看>>
软链接和硬链接详解
查看>>
Redis_master-slave模式
查看>>
3.使用Maven构建Web项目
查看>>
cisco 多生成树MST笔记
查看>>
C 到 C++ 的升级(一)
查看>>
彻底卸载删除微软Win10易升方法
查看>>
Ajaxload动态加载动画生成工具的实现(ajaxload的本地移植)
查看>>
SWT/JFACE之环境配置(一)
查看>>
手把手构建LAMP
查看>>
关于outlook 保存的.msg文件打开一次之后不能再次打开的问题
查看>>
CentOS 6.6安装python3.4.3后yum不能使用的解决办法
查看>>
应用程序日志中总是说MS DTC无法正确处理DC 升级/降级事件,是什么意思
查看>>
毕业了,爱情怎么办?
查看>>
关于django一个请求的生命周期
查看>>