<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 閱讀(480) 評論(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、將返回的值直接帶出到要展示的頁面當中去展示。


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


    網站導航:
     
    主站蜘蛛池模板: 精品免费久久久久久成人影院| 日韩免费的视频在线观看香蕉| 妞干网在线免费视频| 亚洲最大的视频网站| 88av免费观看| 亚洲国产成+人+综合| 欧亚精品一区三区免费| 中日韩亚洲人成无码网站| 成人黄18免费视频| 亚洲av无码日韩av无码网站冲| 国产精品jizz在线观看免费| 免费看内射乌克兰女| 激情综合色五月丁香六月亚洲| 一级有奶水毛片免费看| 国产AV无码专区亚洲AVJULIA| 无码精品一区二区三区免费视频| 亚洲国产精品热久久| 亚色九九九全国免费视频| 中国亚洲呦女专区| 国产一级高清视频免费看| 国产免费内射又粗又爽密桃视频| 亚洲熟妇无码乱子AV电影| 99热这里有免费国产精品| 色偷偷女男人的天堂亚洲网| jjzz亚洲亚洲女人| 日韩精品无码免费专区午夜 | 亚洲一区二区三区无码影院| baoyu777永久免费视频| 自怕偷自怕亚洲精品| 在线jyzzjyzz免费视频| selaoban在线视频免费精品| 久久精品蜜芽亚洲国产AV| 毛片免费在线视频| 久久国产精品免费一区| 亚洲老熟女@TubeumTV| 可以免费观看的一级毛片| 久久国产精品一区免费下载| 亚洲丶国产丶欧美一区二区三区| 国产亚洲精品自在线观看| 两性刺激生活片免费视频| 一级特黄a大片免费|