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

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

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

    qiyadeng

    專注于Java示例及教程
    posts - 84, comments - 152, trackbacks - 0, articles - 34

    Struts之自定義Validator

    Posted on 2005-10-31 18:00 qiyadeng 閱讀(1188) 評論(0)  編輯  收藏 所屬分類: J2EE
    在使用Struts的時候,驗證是使用Validator來做,但是有時候需要有自己的驗證規(guī)則,幸運的是我們可以方便地進行擴展。
    比如我們想定義一個規(guī)則來判定兩次輸入的密碼是相等的。我們需要這樣做,首先我們需要一個類,象這樣子 :

    package com.motel168.util;

    import java.text.SimpleDateFormat;
    import java.util.Date;

    import javax.servlet.http.HttpServletRequest;

    import org.apache.commons.validator.Field;
    import org.apache.commons.validator.GenericValidator;
    import org.apache.commons.validator.ValidatorAction;
    import org.apache.commons.validator.ValidatorUtil;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.validator.Resources;

    public class MyValidator {
    ??? public static boolean validateTwoFields(Object bean,ValidatorAction va,Field field,ActionErrors errors,HttpServletRequest request){
    ??? ???
    ??? ??? String value = ValidatorUtil.getValueAsString(bean,field.getProperty());
    ??? ??? String sProperty2 = field.getVarValue("secondProperty");
    ??? ??? String value2 = ValidatorUtil.getValueAsString(bean,sProperty2);
    ??? ??? if(!GenericValidator.isBlankOrNull(value)){
    ??? ??? ??? try{
    ??? ??? ??? ??? if(!value.equals(value2)){
    ??? ??? ??? ??? ??? errors.add(field.getKey(),Resources.getActionError(request,va,field));
    ??? ??? ??? ??? ??? return false;
    ??? ??? ??? ??? }
    ??? ??? ??? }catch(Exception e){
    ??? ??? ??? ??? errors.add(field.getKey(),Resources.getActionError(request,va,field));
    ??? ??? ??? ??? return false;
    ??? ??? ??? }
    ??? ??? }
    ??? ??? return true;
    ??? }
    ???
    }

    上面這個類就是用來判斷兩個域是否相等,很簡單,但是注意方法名一定要是validateXXX。

    接下來需要擴展validator-rules.xml,在之前加入這么一段:
    ??? ? 
    ??? ? ??? ???
    ???
    ?methodParams="java.lang.Object,org.apache.commons.validator.ValidatorAction,org.apache.commons.validator.Field,org.apache.struts.action.ActionErrors,javax.servlet.http.HttpServletRequest"
    ??? ? ??? ??? ??? ?depends="required" msg="errors.twofield">
    ??? ?
    ??? ? ??? ??? function validateTwoFields(form){
    ??? ? ??? ??? var bValid = true;
    ??? ? ??? ??? var focusField = null;
    ??? ? ??? ??? var i = 0;
    ??? ? ??? ??? var fields = new Array();
    ??? ? ??? ??? oTwoFields = new twofields();
    ??? ? ??? ??? for(x in oTwoFields){
    ??? ? ??? ??? ??? var field = form[oTwoFields[x][0]];
    ??? ? ??? ??? ??? var secondField = form[oTwoFields[x][2]("secondProperty")];
    ??? ? ??? ??? ??? if(field.type=="text"||field.type=="textarea"||field.type=="select-one"||field.type=="radio"||field.type=="password"){
    ??? ? ??? ??? ??? ??? var value;
    ??? ? ??? ??? ??? ??? var secondValue;
    ??? ? ??? ??? ??? ??? if(field.type=="select-one"){
    ??? ? ??? ??? ??? ??? ??? var si = field.selectedIndex;
    ??? ? ??? ??? ??? ??? ??? value = field.options[si].value;
    ??? ? ??? ??? ??? ??? ??? secondValue = secondField.options[si].value;
    ??? ? ??? ??? ??? ??? }else{
    ??? ? ??? ??? ??? ??? ??? value=field.value;
    ??? ? ??? ??? ??? ??? ??? secondValue = secondField.value;
    ??? ? ??? ??? ??? ??? }
    ??? ? ??? ??? ??? ??? if(value!=secondValue){
    ??? ??? ? ??? ??? ??? ??? if(i==0){
    ??? ??? ? ??? ??? ??? ??? ??? focusField = field;
    ??? ? ??? ??? ??? ??? }
    ??? ? ??? ??? ??? ??? fields[i++]=oTwoFields[x][1];
    ??? ? ??? ??? ??? ??? bValid = flase;
    ??? ? ??? ??? ??? }
    ??? ? ??? ??? }
    ??? ? ??? }
    ??? ? ??? if(fiels.length > 0){
    ??? ? ??? ??? focusFiled.focus();
    ??? ? ??? ??? alert(fields.join('\n'));
    ??? ? ??? ??? }
    ??? ? ??? return bValid;
    ??? ?
    ??? ? ]]>
    ??? ?

    ??? ?
    ???
    然后使用的時候就和其他沒什么兩樣的了:
    ??? ??? 
    ??? ??? ???
    ??? ??? ??? ???
    ??? ??? ??? ???
    ??? ??? ??? ???
    ??? ??? ??? ???
    ??? ??? ??? ???
    ??? ??? ??? ??? ??? secondProperty
    ??? ??? ??? ??? ??? newPassword2
    ??? ??? ??? ???

    ??? ??? ???

    ??? ??? ???
    ??? ??? ??? ???
    ??? ??? ??? ???
    ??? ??? ???

    ??? ???


    注意這個地方
    ??? ??? ??? ??? 
    ??? ??? ??? ??? ??? secondProperty
    ??? ??? ??? ??? ??? newPassword2
    ??? ??? ??? ???

    就是我們在java類中讀取的變量,它代表的是另外的一個域。
    在JSP中的使用就不再說明了,大功告成:)。


    主站蜘蛛池模板: 亚洲AV永久青草无码精品| 免费在线精品视频| 亚洲日本在线免费观看| 亚欧日韩毛片在线看免费网站| 亚洲男人的天堂www| 日韩免费的视频在线观看香蕉| 亚洲AV无码一区东京热| 91人成网站色www免费下载| 亚洲精品第五页中文字幕| 久久精品免费全国观看国产| 亚洲欧美日韩一区二区三区| 免费国产怡红院在线观看| 国产精品美女久久久免费| 日韩va亚洲va欧洲va国产| 全部免费毛片在线播放| 亚洲午夜精品一区二区公牛电影院| 国产成人精品久久免费动漫| 亚洲最大的成人网站| 凹凸精品视频分类国产品免费| 中国好声音第二季免费播放| 亚洲国产综合专区在线电影| 免费无码又爽又刺激聊天APP| 亚洲乱码av中文一区二区| 亚洲午夜成人精品电影在线观看| 日韩免费高清播放器| 国产成人精品日本亚洲专区6| 波多野结衣久久高清免费 | 亚洲综合无码一区二区三区| 最近免费中文字幕4| 无遮挡呻吟娇喘视频免费播放| 亚洲日韩v无码中文字幕| 69成人免费视频| 国产成人自产拍免费视频| 亚洲精品影院久久久久久| 四虎免费影院4hu永久免费| 久久香蕉国产线看免费| 亚洲精品自偷自拍无码| 久久国产成人亚洲精品影院| 国产精品69白浆在线观看免费| 一级毛片高清免费播放| 亚洲图片激情小说|