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

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

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

    旅行的意義

     

    struts2類型轉(zhuǎn)換

    概說
    許多時(shí)候struts能很好的將頁面上field中的字符輸入和POJO類中的屬性對應(yīng)起來并自動(dòng)轉(zhuǎn)換(比如整型、日期等等),但如果遇到一些自定義復(fù)雜業(yè)務(wù)類型,就需要我們顯式的提供轉(zhuǎn)換處理。

    struts2中實(shí)現(xiàn)類型轉(zhuǎn)換的接口為

     

    interface com.opensymphony.xwork2.conversion.TypeConverter

     

    其中定義的方法為

     

    Object convertValue(Map<String,Object> context, Object target, Member member, String propertyName, Object value, Class toType)

     

     

    為了方便使用,struts2提供了兩個(gè)實(shí)現(xiàn)

    (1) com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter

    我們只需要override其中的

    Object convertValue(Map<String,Object> context, Object value, Class toType) 方法即可。

    toType為將要轉(zhuǎn)換為的類型

     

    (2)更方便的解決辦法是繼承抽象類

    org.apache.struts2.util.StrutsTypeConverter

    它繼承了上面的類,并提供了兩個(gè)抽象函數(shù)

     

    abstract  Object convertFromString(Map context, String[] values, Class toClass)

    abstract
      String convertToString(Map context, Object o)

     

    因?yàn)槠綍r(shí)最常用的就是特定類型與String類的互轉(zhuǎn),所以在一般情況下實(shí)現(xiàn)這兩個(gè)方法已經(jīng)足夠了。

     

     下面簡單說一下轉(zhuǎn)換原理。在JSP中的s:textfield提交后到Action的同時(shí)也將調(diào)用Action的set方法賦值,如果此時(shí)Action中定義了POJO類,則struts2會(huì)自動(dòng)試圖尋找該類和String[]之間的轉(zhuǎn)換方法。他回到如下兩個(gè)地方尋找:

    (1)WEB-INF下的 xwork-conversion.properties

    某個(gè)字段=轉(zhuǎn)換該字段的類

    如:point1=PointConverter

    (2)與XXXAction所在同一級目錄下的XXXAction-conversion.properties

    某個(gè)要轉(zhuǎn)換的類=轉(zhuǎn)換該類的類

    如:Point=PointConverter

    如果同時(shí)配置的話,(2)具有更高的優(yōu)先級。

    幾個(gè)需要記住的幾個(gè)地方再寫一下:
    class DefaultTypeConverter                     struts2中類型轉(zhuǎn)換的基類 

    class StrutsTypeConverter                        struts2提供的一個(gè)更方便的實(shí)現(xiàn)

    xwork-conversion.properties                    全局轉(zhuǎn)換屬性文件名

    XXXAction-conversion.properties            基于特定Action的轉(zhuǎn)換屬性文件名

     



    集合及部分自動(dòng)轉(zhuǎn)換

    集合的話,最好用范型指定轉(zhuǎn)換類的類型,否則Struts會(huì)找不到

    List<ClassA>

     

    部分自動(dòng)轉(zhuǎn)換是指頁面上可以直接寫類似于ClassA.A,ClassA.B 這樣的field,

    程序會(huì)自動(dòng)尋找Action中的setClassA方法,同時(shí)尋找ClassA中的setA和setB方法從而賦值。
    但是好像實(shí)際使用的時(shí)候用的并不多,因?yàn)檫@樣事實(shí)上直接將POJO的細(xì)節(jié)透露給表示層。

    posted on 2009-01-25 17:20 bacon 閱讀(2723) 評論(0)  編輯  收藏 所屬分類: J2EE

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章分類

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲国产成人资源在线软件| 羞羞网站免费观看| 国产亚洲sss在线播放| 在线观看亚洲免费视频| 成人影片一区免费观看| 成人免费视频88| 午夜影视日本亚洲欧洲精品一区 | 四虎永久在线精品免费网址| 亚洲国产精品无码久久青草| 亚洲国产精品综合久久久| www免费黄色网| 国产免费无遮挡精品视频| 亚洲图片校园春色| 女人18毛片特级一级免费视频 | www国产亚洲精品久久久日本| 亚洲神级电影国语版| 中文字幕乱码系列免费| 国产免费人成视频在线观看 | 一级毛片aaaaaa免费看| 亚洲人成电影网站国产精品| 亚洲熟伦熟女专区hd高清| 最近中文字幕高清免费中文字幕mv| 亚洲精品国产va在线观看蜜芽| 一道本在线免费视频| 免费v片在线观看品善网| 亚洲乱码一区二区三区国产精品| 8x网站免费入口在线观看| 亚洲国产综合第一精品小说| 永久免费av无码网站大全| 亚洲AV无码专区在线亚| 最近中文字幕免费2019| 亚洲欧洲日韩极速播放| 亚洲国产日韩在线观频| 午夜免费啪视频在线观看 | 国产成人亚洲毛片| 欧洲亚洲国产清在高| 丝袜捆绑调教视频免费区| 亚洲欧洲精品国产区| 亚洲高清无码在线观看| 巨波霸乳在线永久免费视频| 91亚洲国产成人久久精品|