JAVA—咖啡館

          ——?dú)g迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術(shù),交流工作經(jīng)驗(yàn),分享JAVA帶來的快樂!本網(wǎng)站部分轉(zhuǎn)載文章,如果有版權(quán)問題請與我聯(lián)系。

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

          為了方便ajax調(diào)用傳輸數(shù)據(jù),在struts2中加入的json插件用來做對象的序列化和反序列化,json插件的下載地址

          http://code.google.com/p/jsonplugin/

          1. 下載json插件包,將jar包拷貝到WEB-INF/lib目錄

          注:struts2的json插件有兩個版本0.32和0.34,我用的struts2的版本是2.0.11,在加入0.34版本json插件時啟動發(fā)生異常,提示找不到相關(guān)方法,后來就換成了低版本的0.32一切OK,仔細(xì)查看文檔后發(fā)現(xiàn)struts2的2.0.*版本的對應(yīng)插件的0.32版本,struts2.1.*版本對應(yīng)0.34版本

           

          2.json插件執(zhí)行原理時序圖

           

          3.將struts.xml里面的


          1<package name="default" extends="struts-default"> 

           

            改為

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

           

          4.Action中的配置

          1<action name="testAction" class="com.json.action.TestAction" method="testMethod">   
          2    <interceptor-ref name="json" /><!--處理以JSON文本提交的請求-->   
          3    <result type="json" /> <!--將action的bean屬性以json字符串返回瀏覽器-->   
          4</action>   

             注:根據(jù)需要選擇interceptor和result配置

           

          5. 你會發(fā)現(xiàn)前臺返回的json字符串,是把a(bǔ)ction中的所有屬性全部轉(zhuǎn)化為json字符串返回給瀏覽器了,但是我有時候需要根據(jù)實(shí)際情況返回部分結(jié)果,如何對json的結(jié)果進(jìn)行定制輸出呢?result提供了一些參數(shù)替你解決這個問題

            5.1. root參數(shù):從返回結(jié)果中根據(jù)ognl表達(dá)式取出你需要輸出的結(jié)果

                   如:

              action類

          public class BaseAction extends ActionSupport implements  {    
              
          private Person person = null;    
                              
          }
             

              bean類  

          1public class Person {    
          2    private String name;    
          3    private int age;    
          4        
          5}
            

              我們只要輸出person對象的name屬性值,配置如下

          1<result type="json">
          2<param name="root">person.name</param>
          3</result>

           

            5.2. excludeNullProperties 參數(shù):表示是否去掉空值, 默認(rèn)值是false,如果設(shè)置為true會自動將為空的值過濾,只輸出不為空的值。

          1<result type="json">   
          2    <param name="excludeNullProperties">true</param>   
          3</result>   
          4

           

            5.3. ignoreHierarchy 參數(shù):表示是否忽略等級,也就是繼承關(guān)系,比如:TestAction繼承于BaseAction,那么TestAction中返回的json字符串默認(rèn)是不會包含父類BaseAction的屬性值,ignoreHierarchy值默認(rèn)為true,設(shè)置為false后會將父類和子類的屬性一起返回。

          1<result type="json">   
          2    <param name="ignoreHierarchy">false</param>   
          3</result>   

           

            5.4. includeProperties 參數(shù):輸出結(jié)果中需要包含的屬性值,這里正則表達(dá)式和屬性名匹配,可以用“,”分割填充多個正則表達(dá)式。

             如:輸出person的所有屬性 

          1<result type="json">   
          2    <param name="includeProperties">person.*, person\.name</param>   
          3</result>   

           

            5.5. excludeProperties 參數(shù):輸出結(jié)果需要剔除的屬性值,也支持正則表達(dá)式匹配屬性名,可以用“,”分割填充多個正則表達(dá)式,類同4.4.

          posted on 2010-01-26 11:36 rogerfan 閱讀(19272) 評論(7)  編輯  收藏 所屬分類: 【開源技術(shù)】

          Feedback

          # re: struts2的json插件配置詳解(附demo) 2012-08-17 09:56 linyi
          很感謝你的這篇文章,讓我明確了我遇到的問題出在哪里。
          麻煩你看一下我這個情況應(yīng)該怎么配置。

          Action中有一個屬性是 List<Person> personList ;

          若是讓struts的json插件來把這個對象轉(zhuǎn)換為json格式,會出現(xiàn)懶加載問題,因?yàn)閜ersonList是Person對象的集合,而person對象中有一個屬性是Cars的一對多關(guān)聯(lián)關(guān)系,所以在轉(zhuǎn)換為json格式的時候cars這個屬性值是無法提取出來的,因?yàn)樵谵D(zhuǎn)換的時候session已經(jīng)關(guān)閉了,而且也沒有必要提取出來,所以我的問題是如何配置可以讓json插件轉(zhuǎn)換json格式的時候忽略 personList集合中Person對象的 cars屬性!

          請你幫我看看,謝謝了!  回復(fù)  更多評論
            

          # re: struts2的json插件配置詳解(附demo) 2012-09-05 10:45 Baiyin
          非常好,看了很多都沒看懂。讀您這篇明白了。  回復(fù)  更多評論
            

          # re: struts2的json插件配置詳解(附demo) 2012-12-19 22:24 阿丘
          非常感謝樓主的筆記,非常的感謝!寫的非常的詳細(xì),為我在項(xiàng)目中這個點(diǎn)的知識明朗了很多!非常感謝!  回復(fù)  更多評論
            

          # re: struts2的json插件配置詳解(附demo) 2013-04-12 20:00 王悠揚(yáng)
          <param name="ignoreHierarchy">false</param>
          解決了我的問題,感謝博主!  回復(fù)  更多評論
            

          # re: struts2的json插件配置詳解(附demo) 2013-05-03 10:56 張西健
          樓主威武  回復(fù)  更多評論
            

          # re: struts2的json插件配置詳解(附demo) 2014-05-27 22:09 劉少寒
          @linyi你先全部提取出來。  回復(fù)  更多評論
            

          # re: struts2的json插件配置詳解(附demo)[未登錄] 2015-10-03 17:28 hello
          @linyi
          我也有這樣的問題,你解決了嗎,雖然幾年了  回復(fù)  更多評論
            

          主站蜘蛛池模板: 梁山县| 双桥区| 正镶白旗| 洛宁县| 冕宁县| 清流县| 上饶市| 文安县| 溧水县| 仁寿县| 甘南县| 黄陵县| 古田县| 黎川县| 霍山县| 梁山县| 连城县| 邳州市| 盘锦市| 舒城县| 新民市| 手游| 乌兰察布市| 惠水县| 个旧市| 桐城市| 丰原市| 顺昌县| 铜山县| 清河县| 西安市| 罗田县| 淳安县| 永清县| 西华县| 治多县| 肇东市| 安化县| 大理市| 元氏县| 富阳市|