<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 431,  comments - 344,  trackbacks - 0
    JSON插件提供了一種名為json的ResultType,一旦為某個Action指定了一個類型為json的Result,則該Result無需映射到任何視圖資源。因為JSON插件會負責將Action里的狀態(tài)信息序列化成JSON格式的數(shù)據,并將該數(shù)據返回給客戶端頁面的JavaScript。

      簡單地說,JSON插件允許我們在JavaScript中異步調用Action,而且Action不再需要使用視圖資源來顯示該Action里的狀態(tài)信息,而是由JSON插件負責將Action里的狀態(tài)信息返回給調用頁面——通過這種方式,就可以完成Ajax交互。

      Struts2提供了一種可插拔方式來管理插件,安裝Struts2的JSON插件與安裝普通插件并沒有太大的區(qū)別,一樣只需要將Struts2插件的JAR文件復制到Web應用的WEB-INF/lib路徑下即可。

      安裝JSON插件按如下步驟進行:

      (1)登陸http://code.google.com/p/jsonplugin/downloads/list站點,下載Struts2的JSON插件的最新版本,當前最新版本是0.7,我們可以下載該版本的JSON插件。

      (2)將下載到的jsonplugin-0.7.jar文件復制到Web應用的WEB-INF路徑下,即可完成JSON插件的安裝。

      實現(xiàn)Actio邏輯

      假設wo,en輸入頁面中包含了三個表單域,這三個表單域對于三個請求參數(shù),因此應該使用Action來封裝這三個請求參數(shù)。三個表單域的name分別為field1、field2和field3。

      處理該請求的Action類代碼如下:  
    public class JSONExample
      {
      //封裝請求參數(shù)的三個屬性
      private String field1;
      private transient String field2;
      private String field3;
      //封裝處理結果的屬性
      private int[] ints = {10, 20};
      private Map map = new HashMap();
      private String customName = "custom";
      //三個請求參數(shù)對應的setter和getter方法
      public String getField1()
      {
      return field1;
      }
      public void setField1(String field1)
      {
      this.field1 = field1;
      }
      //此處省略了field1和field2兩個字段的setter和getter方法
      ...
      //封裝處理結果的屬性的setter和getter方法
      public int[] getInts()
      {
      return ints;
      }
      public void setInts(int[] ints)
      {
      this.ints = ints;
      }
      public Map getMap()
      {
      return map;
      }
      public void setMap(Map map)
      {
      this.map = map;
      }
      //使用注釋語法來改變該屬性序列化后的屬性名
      @JSON(name="newName")
      public String getCustomName()
      {
      return this.customName;
      }
      public String execute()
      {
      map.put("name", "yeeku");
      return Action.SUCCESS;
      }
      }
      在上面代碼中,使用了JSON注釋,注釋時指定了name域,name域指定Action屬性被序列化成JSON對象的屬性名。除此之外,JSON注釋還支持如下幾個域:

          serialize:設置是否序列化該屬性

      deserialize:設置是否反序列化該屬性。

      format:設置用于格式化輸出、解析日期表單域的格式。例如"yyyy-MM-dd'T'HH:mm:ss"。

      配置該Action與配置普通Action存在小小的區(qū)別,應該為該Action配置類型為json的Result。而這個Result無需配置任何視圖資源。

      配置該Action的struts.xml文件代碼如下: 
    <?xml version="1.0" encoding="GBK"?>
    <!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
    <struts>
    <constant name="struts.i18n.encoding" value="UTF-8"/>
    <package name="example" extends="json-default">
    <action name="JSONExample" class="lee.JSONExample">
    <result type="json"/>
    </action>
    </package>
    </struts>  
      在上面配置文件中有兩個值得注意的地方:

      第一個地方是配置struts.i18n.encoding常量時,不再是使用GBK編碼,而是UTF-8編碼,這是因為Ajax的POST請求都是以UTF-8的方式進行編碼的。

      第二個地方是配置包時,自己的包繼承了json-default包,而不再繼承默認的default包,這是因為只有在該包下才有json類型的Result。

    posted on 2008-02-20 17:02 周銳 閱讀(700) 評論(0)  編輯  收藏 所屬分類: Ajax 、Struts
    主站蜘蛛池模板: 国产亚洲一区二区手机在线观看 | 久久天天躁狠狠躁夜夜免费观看| 久久久久亚洲精品中文字幕| 黄色大片免费网站| 免费乱码中文字幕网站| 九九精品国产亚洲AV日韩| 免费无码又爽又高潮视频| 亚洲午夜福利在线视频| 成人免费视频小说| 最新亚洲人成无码网www电影| 暖暖免费高清日本一区二区三区| 亚洲欧美国产日韩av野草社区| 大学生a级毛片免费观看| 亚洲AV无码片一区二区三区| 国产三级免费电影| j8又粗又长又硬又爽免费视频| 亚洲欧洲中文日韩av乱码| WWW免费视频在线观看播放| 亚洲国产成人精品无码区在线观看| 免费人成在线观看视频高潮| 亚洲最新视频在线观看| 97视频热人人精品免费| 亚洲Aⅴ在线无码播放毛片一线天| 国产成人精品免费视频软件| 男人免费视频一区二区在线观看| 国产亚洲老熟女视频| 无码国产精品一区二区免费模式| 亚洲伊人久久精品| 国产在线观看www鲁啊鲁免费| a级毛片免费观看网站| 亚洲第一福利网站| 最近2019中文字幕免费看最新| 美女被爆羞羞网站在免费观看| 亚洲最大av无码网址| 99久久精品国产免费| 亚洲国产精品嫩草影院| 国产AV无码专区亚洲AV手机麻豆| 69精品免费视频| 国产精品亚洲专区一区| 亚洲AV人人澡人人爽人人夜夜| 毛片A级毛片免费播放|