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

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

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

    ply

    吞噬黑暗
    posts - 1, comments - 11, trackbacks - 0, articles - 13
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    struts2的類型轉換

    Posted on 2011-09-15 14:39 ply 閱讀(479) 評論(0)  編輯  收藏

    web應用類型的轉換分為兩種情況:

    1.從客房端的字符串到自定義類型的轉換。

    2.頁面輸出時從自定義類型到字符串的轉換。

    在struts2中分兩種轉換,一種是局部轉換,另一種是全局類型轉換。具體轉換的實施需要一個轉換類和一個自定義類。我們先來看局部類型轉換。

    局部類型轉換

    對于int等基本類型,struts2會自動完成類型轉換,像age年齡,在輸入頁面是String型的,到Action后會自動轉換成int型。而如果是轉換成對象類型的話,就需要自定義類型轉換。這樣就需要一個自定義類。要定義一個轉換類,需要繼承ognl.DefaultTypeConverter這個類 ,這是個類型轉換的類。代碼如下:

     1 public class PointConverter extends DefaultTypeConverter{

     2     public Ojbect convertValue(Map context,Object value,Class tyType){//重寫方法
     3         if(Point.class==toType){
     4             Point point = new Point();
     5             String[] str = (String[])value;//將String轉換成類的代碼處理
     6             return point;
     7          }
     8          if(String.class==toType){//說明由類轉換成String
     9              Point point = (Point)value;//將類轉成String的代碼處理
    10              return String型的一個變量;
    11          }
    12          return null;
    13     }
    14 }

    方法對數說明:1、Map context  ——應用上正文

                        2、Object value ——是要進行類型轉換的值。如果是從客戶端到自定義的類,那么value是個字符串。注意:它是一個字符串的數組。因為:在表單中可以有多個文本域,而所有文本域可以是同一個名字,這時是考慮通用性而作為數組處理的。如果只有一個文本域,則數組只有一個元素,下標為0。注:jsp的servlet中接收多個相同名字的輸入域用request.getParameterValues()方法。

                        3、class toType ——來指定向哪 一種類型轉換,即是向類轉換還是向客戶端轉換。

                        4、Point是一個類,即是我們的自定義類。不是系統內置的類型

     1 if(類.class == toType){//說明由客戶端向類轉換
     2     Point point = new Point();//向哪個類轉換,就實例化這個類
     3     String[] str = (String[])value;//因為是由客戶端向類轉換,所以此時value是一個String[]數組
     4     String[] paramValues = str[0].split(",");
     5     //下面部分代碼就是進行轉換處理
     6 }
     7 if(String.class == toType){//說明由類向客戶端的String轉換,此時value是一個對象
     8     Point point = (Point)value;
     9     //下面部分的代碼就是進行轉換處理;
    10 }

     自定義類、轉換類、action都創建好之后,要通告struts2轉換類在什么地方,并且告訴struts2是對誰進行轉換。寫一個文件:action文件名-conversion.properties,此屬性文件要與action在同一包下,此文件說明對此action中的屬性進行轉化。

     文件中的內容如下:

    point = 轉換類名

     內容說明:

    1、point是Action中的一個屬性,轉換類指明所使用哪個轉換類對此屬性進行轉換

    2、properties文件中的注釋為“#”號,前面加“#”的行是被注釋的

    類型轉換的流程

     1、用戶進行請求,根據請求名在struts.xml中尋找Action

     2、在Action中,根據請求域中的名字去尋找對應的set方法。找到后在賦值之前會檢查這個屬性有沒有自定義的類型轉換。沒有的話,按照默認進行轉換;如果某個屬性已經定義好了類型轉換,則會去檢查在Action同一目錄下的 action文件名-conversion.properties 文件。

     3、從文件中找到要轉換的屬性及其轉換類。

     4、然后進入轉換類中,在此類中判斷轉換的方向。我們是先從用戶請求開始的,所以這時先進入從字符串到類的轉換。返回轉換后的對象。流程返回Action。

     5、將返回的對象賦值給Action中的屬性,執行Action中的execute()

     6、執行完execute()方法,根據struts.xml的配置轉向頁面

     7、在jsp中顯示內容時,根據頁面中的屬性名去調用相應的get方法,以便輸出

     8、在調用get方法之前,會檢查有沒有此屬性的自定義類型轉換。如果有,再次跳轉到轉換類當中。

     9、在轉換類中再次判斷轉換方向,進入由類到字符串的轉換,完成轉換后返回字符串。

     10、將返回的值直接帶出到要展示的頁面當中去展示。


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: xxxx日本免费| 91香焦国产线观看看免费| 日韩免费毛片视频| 国产午夜亚洲精品| 在线播放免费播放av片| 亚洲人成色4444在线观看| 国产成人免费高清激情视频| 亚洲欧洲日产国码在线观看| 182tv免费视视频线路一二三 | 国产亚洲精品美女久久久久| 免费的涩涩视频在线播放| 亚洲AV成人精品一区二区三区| 暖暖免费高清日本中文| 四虎影视永久在线精品免费| 国产国拍精品亚洲AV片| 在线播放免费人成毛片乱码 | 亚洲日产2021三区在线| 曰曰鲁夜夜免费播放视频| 亚洲一级免费视频| 拔擦拔擦8x华人免费久久| 午夜免费国产体验区免费的| 亚洲精品无码专区在线在线播放| 在线观看肉片AV网站免费| 亚洲国产精品网站久久| 日本牲交大片免费观看| 国产精品美女久久久免费| 2022年亚洲午夜一区二区福利 | 爱情岛亚洲论坛在线观看| 亚洲情侣偷拍精品| 少妇无码一区二区三区免费| 亚洲AV综合色区无码二区爱AV| 国产成人免费网站在线观看| 青青操免费在线观看| 亚洲国产日韩在线| 免费一级毛片不卡不收费| 亚欧免费无码aⅴ在线观看| 亚洲美国产亚洲AV| 亚洲另类激情综合偷自拍图| 久久久久久久免费视频| eeuss影院免费直达入口| 亚洲国产美女视频|