方法1 :利用Struts 2的支持的可配置結果,可以達到過濾器的效果。Action的處理結果配置支持正則表達式。
但是如果返回的對象是一個數組格式的Json數據。比如peson Bean中有對象persion1…person9,而我只要person1的json數據, 則可以用如下的正則表達式。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<struts> <constant name= "struts.objectFactory" value= "spring" /> <include file= "struts-admin.xml" ></include> < package name= "default" extends = "json-default" > <action name= "person" class = "com.person.PersonAction" method= "view" > <result type= "json" > <param name= "includeProperties" > person/[/d+/]/.person1 </param>> </result> </action> </ package > </struts> |
excludeProperties攔截器的用法與此類同,如果攔截的僅僅是一個對象,如果攔截掉person Bean的整個對象。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<struts> <constant name= "struts.objectFactory" value= "spring" /> <include file= "struts-admin.xml" ></include> < package name= "default" extends = "json-default" > <action name= "person" class = "com.person.PersonAction" method= "view" > <result type= "json" > <param name= "excludeProperties" > person </param>> </result> </action> </ package > </struts> |
方法2:需要注意的是,如果用JSON插件把返回結果定為JSON。而JSON的原理是在ACTION中的get方法都會序列化
所以前面是get的方法只要沒指定不序列化,都會執(zhí)行。 如果該方法一定要命名為get*(比如實現(xiàn)了什么接口), 那么可以在該方法的前面加注解聲明該方法不做序列化。
注解的方式為:@JSON(serialize=false)
除此之外,JSON注釋還支持如下幾個域:
- serialize:設置是否序列化該屬性
- deserialize:設置是否反序列化該屬性。
- format:設置用于格式化輸出、解析日期表單域的格式。例如”yyyy-MM-dd'T'HH:mm:ss”。
1
2
3
4
5
6
7
|
//使用注釋語法來改變該屬性序列化后的屬性名 @JSON (name= "newName" ) public String getName() { return this .name; } |
需要引入 import org.apache.struts2.json.annotations.JSON;
1
2
3
4
5
6
7
8
9
|
@JSON (serialize= false ) public User getUser() { return this .User; } @JSON (format= "yyyy-MM-dd" ) public Date getStartDate() { return this .startDate; } |
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://blog.csdn.net/fangaohua200/article/details/54566504