日期:2014-05-16  浏览次数:20495 次

struts2-json详解(一)
result   类型  为stream

<action name="ss">
   <result type="stream">
    //指定被下载文件的文件类型
    //image/jpg   图片jpg
    //image/gip   图片gif
    //application/zip
    <param name="contentType">image/jpg</param>
    //指定被下载文件的入口输入流
    <param name="inputName">targetFile</param>
   
    //指定下载的文件名
    <param name="contentDisposition">filename="wjc_lgo.jpg"</param>
   
    //指定下载文件时的缓冲大小
    <param name="bufferSize">4096</param>
   
   </result>
  </action>

这五个参数是StreamResult中需要使用到的属性,当然也可以不用配置,但是前提是属性值需要符合StreamResult默认的参数。比如这个文件的contentType是image/gif的,而StreamResult中默认的是text/plain.

JSONArray:是用于将Java中Array以及Collection转换成Json形式的字符串;
JSONObject:是将Java中的普通对象以及Map转换成Json形式的字符串;
JsonConfig:当我们将Java中的对象要转换成Json的时候,需要防止形成环状(比如在一对一等映射关系中),如果你是使用 Hibernate的时候,对于代理对象也是不能转化的,还有就是对于日期的转换也是经常会出错的(如果一定要使用日期,建议使用dwr传输数据)。以上三种情景是在使用Json的时候最容易出错的,幸好JsonConfig帮了我们大忙。使用JsonConfig可以将一个类中包含以上三种类型的属性在将对象转换成Json的时候过滤掉(当然是在客户端不需要那些属性的情况下),同时这样也能减少网络通信的数据量,提升性能。
result   类型  为json
有param下如:

ignoreHierarchy参数:表示是否忽略等级,也就是继承关系,比如:TestAction继承于BaseAction,那么TestAction中返回的json字符串默认是不会包含父类BaseAction的属性值,
ignoreHierarchy值默认为true,设置为false后会将父类和子类的属性一起返回。
<result type="json">
<param name="ignoreHierarchy">false</param>
</result>

excludeNullProperties参数:表示是否去掉空值,默认值是false,如果设置为true会自动将为空的值过滤,只输出不为空的值。
<result type="json">
<param name="excludeNullProperties">true</param>
</result>

root参数:从返回结果中根据ognl表达式取出你需要输出的结果。
只输出person对象的name属性值,配置如下:
<result type="json">
<param name="root">person.name</param>
</result>

includeProperties参数:输出结果中需要包含的属性值,这里正则表达式和属性名匹配,可以用“,”分割填充多个正则表达式。
<result type="json">
<param name="includeProperties">person.*, person\.name</param>
</result>

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