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

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

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

    posts - 64,  comments - 9,  trackbacks - 0

    一. ActionSupport是個工具類,他實現(xiàn)了Action, Validatable等接口, Validatable提供validate()方法進行數(shù)據(jù)驗證.Action只要繼承ActionSupport類,重寫validate()方法就可以進行數(shù)據(jù)驗證

    二. 校驗的流程
         首先,Struts框架對輸入數(shù)據(jù)進行類型轉(zhuǎn)換,然后再進行數(shù)據(jù)校驗,如果類型轉(zhuǎn)換與數(shù)據(jù)校驗都沒有錯誤發(fā)生, 就進入execute(),否則請求將被轉(zhuǎn)發(fā)到input視圖

    三. 注冊實例
        首先新建RegistAcion.java

    Java代碼 復(fù)制代碼
    1. package com;   
    2. import java.util.Date;   
    3. import com.opensymphony.xwork2.ActionSupport;   
    4. public class RegistAction extends ActionSupport {   
    5.     private String userName;   
    6.            
    7.     private Integer age;   
    8.        
    9.     private Date birthday;   
    10.        
    11.     public String getUserName() {   
    12.         return userName;   
    13.     }   
    14.     public void setUserName(String userName) {   
    15.         this.userName = userName;   
    16.     }   
    17.     public Integer getAge() {   
    18.         return age;   
    19.     }   
    20.     public void setAge(Integer age) {   
    21.         this.age = age;   
    22.     }   
    23.     public Date getBirthday() {   
    24.         return birthday;   
    25.     }   
    26.     public void setBirthday(Date birthday) {   
    27.         this.birthday = birthday;   
    28.     }   
    29.     @Override  
    30.     public String execute() throws Exception {   
    31.         System.out.println("注冊成功");   
    32.         return SUCCESS;   
    33.     }   
    34.     @Override  
    35.     public void validate() {   
    36.         if("".equals(userName)){   
    37.             addFieldError("userName""username is empty");   
    38.         }   
    39.         if(null != age){   
    40.             if(1 > age || 150 < age){   
    41.                 addFieldError("age""age invalid");   
    42.             }   
    43.         }   
    44.     }   
    45. }  

     配置Action

    Xml代碼 復(fù)制代碼
    1. <action name="regist" class="com.RegistAction">  
    2.       <result name="success">/welcome.jsp</result>  
    3.       <result name="input">/regist.jsp</result>  
    4.  </action>  

     接著是注冊頁面和注冊成功頁面

    regist.jsp

    Html代碼 復(fù)制代碼
    1. <body>  
    2.     <form action="regist.action" method="post">  
    3.         <s:fielderror></s:fielderror>  
    4.         <table><tr>  
    5.                 <td>userName:</td>  
    6.                 <td>  
    7.                     <input type="text" name="userName">  
    8.                 </td>  
    9.             </tr>  
    10.             <tr>  
    11.                 <td>age:</td>  
    12.                 <td>  
    13.                     <input type="text" name="age">  
    14.                 </td>  
    15.             </tr>  
    16.             <tr>  
    17.                 <td>birthday:</td>  
    18.                 <td>  
    19.                     <input type="text" name="birthday">  
    20.                 </td>  
    21.             </tr>  
    22.             <tr>  
    23.                 <td colspan="2">  
    24.                     <s:submit value="注冊"></s:submit>  
    25.                 </td>  
    26.             </tr>  
    27.     </form>  
    28.   </body>  

     如果不輸入userName, age輸入為abc,會提示
     Invalid field value for field "age".
     username is empty

    1. 其中Invalid field value for field "age" 信息是struts2通過內(nèi)置的類型轉(zhuǎn)換器進行類型轉(zhuǎn)換時,如果不能成功轉(zhuǎn)換, struts2框架自動生成一條錯誤信息,并將該錯誤信息放到addFieldError里面,這種默認(rèn)的輸出信息格式是在  xwork-2.0.4.jar中定義的.  com/opensymphony/xwork2/xwork-messages.properties文件中有一條xwork.default.invalid.fieldvalue=Invalid field value for field "{0}".

    2. 這是一種全局的錯誤提示方式,整個系統(tǒng)中只要是字段類型轉(zhuǎn)換錯誤都會這樣提示,我們也可以改變這種輸出格式,只要在全局的國際資源文件中重寫xwork.default.invalid.fieldvalue就可以了.

    實現(xiàn)方式:
    在struts.xml中加入<constant name="struts.custom.i18n.resources" value="messageResource"></constant> (此處i18n,不是l,是1)
    或者也可以在struts.properties中加入struts.custom.i18n.resources=messageResource
    指定國際化資源文件名為messageResource. Properties

    新建messageResource. Properties資源文件并添加數(shù)據(jù)xwork.default.invalid.fieldvalue={0} failure
    修改之后字段類型轉(zhuǎn)換錯誤提示為 : {0} failure

    3 所有的類型轉(zhuǎn)換失敗后,struts2會將基本類型設(shè)置為0,對象類型設(shè)置為null,這里的age的類型為Integer,當(dāng)類型轉(zhuǎn)換失敗age值為null,如果age的類型為int,那么轉(zhuǎn)換失敗后值為0

    4.這種提示信息不夠友好,也可以定義局布的提示信息,為每一個Action新建一個properties文件,文件名為XXX.properties(Action名.properties)

    實現(xiàn)方式:新建RegistAction.properties并添加
    invalid.fieldvalue.age=age error
    invalid.fieldvalue.birthday=birthday error
    其中age和birthday分別為字段的名稱

    四.
    Struts2也提供類似BaseDispatchAction的功能

    Java代碼 復(fù)制代碼
    1. package com;   
    2. import com.opensymphony.xwork2.ActionSupport;   
    3. public class Regist2Action extends ActionSupport {   
    4.     private String userName;   
    5.            
    6.     public String getUserName() {   
    7.         return userName;   
    8.     }   
    9.     public void setUserName(String userName) {   
    10.         this.userName = userName;   
    11.     }   
    12.     public String regist() throws Exception {   
    13.         System.out.println("注冊成功-regist");   
    14.         return SUCCESS;   
    15.     }   
    16.        
    17.     public void validateRegist() {   
    18.         if(userName.equals("")){   
    19.             addFieldError("userName""請輸入用戶名-registValidate");   
    20.         }   
    21.     }   
    22. }  

      <action name="regist2" class="com.Regist2Action" method="regist">
         <result name="success">/welcome.jsp</result>
         <result name="input">/regist2.jsp</result>
       </action>

    指定了method為regist,當(dāng)請求時會執(zhí)行regist(),不會再去執(zhí)行默認(rèn)的execute()方法了,
    validateRegist()方法是專門針對regist校驗的.(格式為validate+方法名)

    posted on 2009-10-13 14:58 super_nini 閱讀(324) 評論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    <2009年10月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿

    隨筆檔案

    文章檔案

    相冊

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产精品免费久久久久影院| 成全视频在线观看免费高清动漫视频下载| 97公开免费视频| 黑人大战亚洲人精品一区| 亚洲影视自拍揄拍愉拍| 中文字幕看片在线a免费| 免费电视剧在线观看| 亚洲欧洲春色校园另类小说| 麻豆精品不卡国产免费看| 免费日本黄色网址| 亚洲中文字幕乱码熟女在线| 99在线观看免费视频| 久久久久亚洲精品影视| 三级黄色在线免费观看| 亚洲一区二区三区亚瑟 | 久久国产乱子精品免费女| 亚洲情A成黄在线观看动漫软件| 成人A级毛片免费观看AV网站| 黄色视屏在线免费播放| 亚洲AV无码一区二区乱孑伦AS| 精品无码一级毛片免费视频观看| 亚洲国产成人资源在线软件 | 狼友av永久网站免费观看| 自拍日韩亚洲一区在线| 亚洲欧洲美洲无码精品VA| 99热在线日韩精品免费| 国产精品国产亚洲精品看不卡| 精品在线免费观看| 精品亚洲国产成人av| 国产jizzjizz视频全部免费| 日日麻批免费40分钟日本的| 精品亚洲成A人无码成A在线观看| 日韩一卡2卡3卡4卡新区亚洲| 黄a大片av永久免费| 亚洲视频免费播放| 亚洲日韩精品国产3区| 国产精品四虎在线观看免费| 一个人看的免费观看日本视频www 一个人看的免费视频www在线高清动漫 | 亚洲中文字幕无码一去台湾| 亚洲AV无码久久精品色欲| 亚洲成年看片在线观看|