<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代碼 復制代碼
    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代碼 復制代碼
    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代碼 復制代碼
    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里面,這種默認的輸出信息格式是在  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會將基本類型設置為0,對象類型設置為null,這里的age的類型為Integer,當類型轉(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代碼 復制代碼
    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,當請求時會執(zhí)行regist(),不會再去執(zhí)行默認的execute()方法了,
    validateRegist()方法是專門針對regist校驗的.(格式為validate+方法名)

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

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


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

    常用鏈接

    留言簿

    隨筆檔案

    文章檔案

    相冊

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲高清在线视频| 亚洲综合无码一区二区痴汉 | 99精品免费视品| 亚洲AV永久无码精品一百度影院| 在线观看免费视频资源| 在线观看亚洲AV日韩AV| 国内精品久久久久久久亚洲| 亚洲美女免费视频| 一区视频免费观看| 亚洲电影在线播放| 亚洲乱码中文字幕手机在线| 久久午夜夜伦鲁鲁片免费无码影视| 亚洲AV无码片一区二区三区| 亚洲av无码潮喷在线观看| 超pen个人视频国产免费观看 | 免费H网站在线观看的| 九九视频高清视频免费观看| 亚洲国产精品人久久电影| 亚洲情侣偷拍精品| 最近中文字幕无免费视频| 免费看少妇高潮成人片| 黄网站在线播放视频免费观看| 亚洲视频在线免费看| MM131亚洲国产美女久久| 69成人免费视频无码专区| 成全视频高清免费观看电视剧| 亚洲av无码成人精品国产| 久久久亚洲AV波多野结衣| 亚洲中文无韩国r级电影| 黄页网站在线看免费| 无码国产精品一区二区免费3p| 美美女高清毛片视频黄的一免费| 亚洲AV无码成人专区| 午夜亚洲AV日韩AV无码大全| 免费国产成人高清视频网站| 黄瓜视频影院在线观看免费| 特级精品毛片免费观看| a级毛片在线免费| 无码的免费不卡毛片视频| 亚洲精品第一国产综合亚AV| 亚洲中文字幕无码av在线|