詳解Struts2中json 相互引用死循環(huán)解決辦法
方法1 :利用Struts 2的支持的可配置結(jié)果,可以達(dá)到過濾器的效果。Action的處理結(jié)果配置支持正則表達(dá)式。
但是如果返回的對象是一個數(shù)組格式的Json數(shù)據(jù)。比如peson Bean中有對象persion1…person9,而我只要person1的json數(shù)據(jù), 則可以用如下的正則表達(dá)式。
<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的整個對象。
<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插件把返回結(jié)果定為JSON。而JSON的原理是在ACTION中的get方法都會序列化
所以前面是get的方法只要沒指定不序列化,都會執(zhí)行。 如果該方法一定要命名為get*(比如實現(xiàn)了什么接口), 那么可以在該方法的前面加注解聲明該方法不做序列化。
注解的方式為:@JSON(serialize=false)
除此之外,JSON注釋還支持如下幾個域:
- serialize:設(shè)置是否序列化該屬性
- deserialize:設(shè)置是否反序列化該屬性。
- format:設(shè)置用于格式化輸出、解析日期表單域的格式。例如”yyyy-MM-dd'T'HH:mm:ss”。
//使用注釋語法來改變該屬性序列化后的屬性名 @JSON(name="newName") public String getName() { return this.name; }
需要引入 import org.apache.struts2.json.annotations.JSON;
@JSON(serialize=false) public User getUser() { return this.User; } @JSON(format="yyyy-MM-dd") public Date getStartDate() { return this.startDate; }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于feign調(diào)用的參數(shù)傳遞問題(@RequestBody和@RequestParam)
這篇文章主要介紹了關(guān)于feign調(diào)用的參數(shù)傳遞問題(@RequestBody和@RequestParam),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03淺談java中String StringBuffer StringBuilder的區(qū)別
下面小編就為大家?guī)硪黄獪\談java中String StringBuffer StringBuilder的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06SpringMVC結(jié)合模板模式實現(xiàn)MyBatisPlus傳遞嵌套JSON數(shù)據(jù)
我們經(jīng)常會遇到需要傳遞對象的場景,有時候,我們需要將一個對象的數(shù)據(jù)傳遞給另一個對象進(jìn)行處理,但是又不希望直接暴露對象的內(nèi)部結(jié)構(gòu)和實現(xiàn)細(xì)節(jié),所以本文給大家介紹了SpringMVC結(jié)合模板模式實現(xiàn)MyBatisPlus傳遞嵌套JSON數(shù)據(jù),需要的朋友可以參考下2024-03-03java 方法重寫與權(quán)限修飾符以及多態(tài)和抽象類詳解概念和用法
重寫是子類對父類的允許訪問的方法的實現(xiàn)過程進(jìn)行重新編寫, 返回值和形參都不能改變。即外殼不變,核心重寫,權(quán)限修飾符用于控制被修飾變量、方法、類的可見范圍,說明了面向?qū)ο蟮姆庋b性,所以我們要適用他們盡可能的讓權(quán)限降到最低,從而安全性提高2021-10-10SpringSecurity HttpSecurity 類處理流程分析
SpringSecurity在SSM項目中使用基于配置文件,通過XML標(biāo)簽定義認(rèn)證信息,HttpSecurity在SpringBoot中通過代碼配置實現(xiàn)與XML相同功能,詳細(xì)介紹了HttpSecurity的類結(jié)構(gòu)、處理過程及其與SecurityBuilder的關(guān)系,感興趣的朋友一起看看吧2024-09-09SpringBoot一個接口多個實現(xiàn)類的調(diào)用方式總結(jié)
這篇文章主要介紹了SpringBoot一個接口多個實現(xiàn)類的調(diào)用方式,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2024-01-01hadoop中實現(xiàn)java網(wǎng)絡(luò)爬蟲(示例講解)
下面小編就為大家?guī)硪黄猦adoop中實現(xiàn)java網(wǎng)絡(luò)爬蟲(示例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09