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

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

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

    旅行的意義

     

    Struts2 數(shù)據(jù)輸入校驗(1) —— 函數(shù)驗證

    用struts2標(biāo)簽庫來實現(xiàn)上述目的的基本原理:
    錯誤消息分為field級和action級,都在ActionSupport類中預(yù)定義了,不同的是,
    fieldError是通過一個Map來實現(xiàn),事實上記錄了field的名字和錯誤信息,因此能在頁面上對應(yīng)的field中顯示;
    而actionError是通過一個Collection實現(xiàn),沒有記錄報錯的來源,只記錄了錯誤信息。
     

    注意,下面是簡要流程: 
    (1)頁面提交到action之后,首先struts會嘗試對輸入的字符串信息根據(jù)Action中定義的屬性類型進行類型匹配及轉(zhuǎn)換,如果輸入為空,它會將內(nèi)容置為該類型的缺省值(0、0.0、空字符串等等),對于數(shù)據(jù)格式不匹配的情況,比如說在age欄里面輸入字母等等,struts會自動提示默認(rèn)的錯誤,并返回input,這一工作是struts2自動完成的。
     
    (2)然后,驗證機制生效,調(diào)用validate()函數(shù)和XML驗證框架中的驗證邏輯(《Struts2 數(shù)據(jù)輸入校驗(2) —— XML驗證 》會提到),檢查的同時會因為驗證錯誤調(diào)用了addFieldError()和addActionError()。頁面提交之前,struts會調(diào)用ActionSupport(嚴(yán)格說是ValidationAware接口)的hasErrors()方法,該方法很簡單,就是檢查fieldError的Map和actionError的Collection是否為空,如果均為空,則調(diào)用execute()方法[*]進行業(yè)務(wù)邏輯的調(diào)度,否則返回error。
     
    (3)最后,程序會根據(jù)返回信息執(zhí)行forward操作,struts.xml中則定義了這些返回值所對應(yīng)的跳轉(zhuǎn)邏輯。

     
    如果有錯誤返回,錯誤信息會在頁面上提示
    在Action中所有addFieldError()設(shè)置的信息將在對應(yīng)的field位置顯示;
    在Action中所有addActionError()設(shè)置的信息將不會顯示,除非在頁面中定義了s:actionerror控件,那么錯誤將以ul的格式顯示。
     
     
     
    對多驗證和跳轉(zhuǎn)邏輯的支持
    對于一些Action如果需要重用,struts也提供了支持。
    上述[*]處,你也可以指定其它任意的名字,這需要在struts.xml中修改對應(yīng)action的method屬性
    <action name="XXXAction" class="com.myspace.myname.XXXAction" method="newExcuteName">
          
    <result>success.jsp</result>
    </action>

     
    同時在XXXAction中我們需要定義一個方法
    public String newExcuteName(){  /*dummy code*/ }

    如果同時還定義了
    public void validateNewExcuteName(){  /* dummy code */ }

    那么在執(zhí)行validate()之前,程序會先執(zhí)行validateNewExcuteName()方法
    可以考慮把所有公用的驗證邏輯放到validate()方法中
    上述過程完全是靠java反射機制實現(xiàn)的,效率會低一些,所以除非真有必要,否則不用。

     

    錯誤提示字符串的本地化
    在validator方法中直接寫錯誤信息固然方便,但不算是一個好習(xí)慣,同時也不能支持本地化。下面簡單說明本地化的兩種方式
    1、全局國際化默認(rèn)的錯誤提示,首先在struts.xml中加入常量

    <struts>
    <constant name="struts.custom.i18n.resources" value="message"></constant>
    </struts>


    然后在與struts.xml同級的位置建立message.properties中寫入

    xwork.default.invalid.fieldvalue={0} error

     

    2、針對某個Action的驗證錯誤提示
    在與XXXAction同級目錄下建立與該Action同名的屬性文件
    XXXAction.properties中寫入

    invalid.fieldvalue.字段名=錯誤信息

    posted on 2009-02-01 21:45 bacon 閱讀(2410) 評論(1)  編輯  收藏 所屬分類: J2EE

    評論

    # re: Struts2 數(shù)據(jù)輸入校驗(1) —— 函數(shù)驗證 2009-03-17 18:46 polaris

    怎么感覺殘缺不全呢?沒頭沒尾的……  回復(fù)  更多評論   

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章分類

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 91亚洲一区二区在线观看不卡 | a级毛片免费观看网站| 亚美影视免费在线观看| 免费黄色大片网站| 亚洲精品V欧洲精品V日韩精品| 亚洲国产日韩在线成人蜜芽| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 青娱分类视频精品免费2| 亚洲av无码国产精品色在线看不卡 | 久久不见久久见免费视频7| 国产黄色片在线免费观看| 亚洲av无码av制服另类专区| 久久水蜜桃亚洲AV无码精品| 麻豆高清免费国产一区| av在线亚洲欧洲日产一区二区| 亚洲图片激情小说| 麻豆精品不卡国产免费看| 亚洲AV无码一区二区三区在线观看| 亚洲欧美在线x视频| 亚洲伊人成无码综合网| a级片免费在线播放| 全黄a免费一级毛片人人爱| 精品亚洲AV无码一区二区三区| 一级人做人a爰免费视频 | 亚洲欧洲免费视频| 国产日韩成人亚洲丁香婷婷| 亚洲a∨国产av综合av下载| 大胆亚洲人体视频| 亚洲午夜在线播放| 免费视频爱爱太爽了| 亚洲久本草在线中文字幕| a国产成人免费视频| 亚洲日本韩国在线| 无码国产精品一区二区免费式芒果 | 亚洲最新视频在线观看| 一区二区三区无码视频免费福利 | 国产视频精品免费| 亚洲AV无码国产一区二区三区 | 4hu四虎最新免费地址| 亚洲色图综合网站| 啦啦啦在线免费视频|