struts2的json插件详解 注解

如果我们要在struts2中使用JSON的功能,需要引入struts2-json-plugin-2.3.4.1.jar,


如果使用注解的方式配置JSON,还需要引入

struts2-convention-plugin-2.3.4.1.jar

commons-io-2.0.1.jar

这两个包


使用注解的方式配置需要注意两点

1.包必须继承 @ParentPackage("json-default")

2.Result(type="json")类型为json,同时location这个属性不能配置,必须使用空,不然会报错。

 

---------------------------------------------------------------------------------------

几个常用参数的说明:


1.root参数:从返回结果中根据ognl表达式取出你需要输出的结果


JSON默认序列化Action中的所有属性,如果我们只想要个对象格式的json,我们需要传入一个


@Action(value="message",results={ @Result(type="json",params={"root","要输出的属性名称(可以使用ognl表达式操作根对象)"})})


这样我们就可以得到一个这样的结构

{
 message:"",
 list:[]
 map:{}
}

------------------------------------------------------------------------------------------


2.  excludeNullProperties 参数:表示是否去掉null值的属性,默认值是false,如果设置为true会自动将为null值属性过滤,

    只输出不为null值的属性。


@Action(value="message",results={ @Result(type="json",params={"excludeNullProperties","true"})})

 


------------------------------------------------------------------------------------------


3.  ignoreHierarchy 参数:表示是否忽略等级,也就是继承关系,比如:TestAction继承于BaseAction,那么TestAction中返回的json字符串默认是不会包含父类BaseAction的属性值,

    ignoreHierarchy值默认为true,设置为false后会将父类和子类的属性一起输出。

 

@Action(value="message",results={ @Result(type="json",params={"ignoreHierarchy","true"})})


------------------------------------------------------------------------------------------


4.  includeProperties 参数:输出结果中需要包含的属性值,这里正则表达式和属性名匹配,可以用“,”分割多个正则表达式。

 

@Result(name="json",type="json",params={"includeProperties","message,person\\.name,list\\[1\\]\\.age,map.*","prefix","true"})


要注意的是这里非正则表达式的符号,要进行转移,不然ognl表达式不会识别。


------------------------------------------------------------------------------------------


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

 

-------------------------------------------------------------------------------------------


@JSON注解

1.默认情况下以get方法开头的都会序列化,如果不想序列化,在action中的方法要打上注解 @JSON(serialize=false)。

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

3. @JSON(format ="yyyy-MM-dd'T'HH:mm:ss")设置用于格式化json数据中的日期。

4. @JSON(deserialize=true)设置是否反序列化该属性。

总结常用的注解如下:

 

Namespace:指定命名空间。

ParentPackage:指定父包。

Result:提供了Action结果的映射。(一个结果的映射)

Results:“Result”注解列表

ResultPath:指定结果页面的基路径。

Action:指定Action的访问URL。

Actions:“Action”注解列表。

ExceptionMapping:指定异常映射。(映射一个声明异常)

ExceptionMappings:一级声明异常的数组。

InterceptorRef:拦截器引用。

InterceptorRefs:拦截器引用组。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值