擴展的驗證工具類

/**
 * 擴展的驗證工具類.
*@ ValidationUtils 系統封裝的類
 * @since 20130609
 */
public class ValidateUtils extends ValidationUtils {
 
 /**
  * 字段超長時駁回.
  * @param errors
  * @param field 字段名.
  * @param length 最大長度.
  * @param errorCode 消息配置文件中的錯誤代碼.
  * @param errorArgs 錯誤參數.
  * @param defaultMessage 缺省錯誤消息.
  */
 public static void rejectIfTooLong(Errors errors, String field, Integer length, String errorCode, String errorArgs[], String defaultMessage) {
  String value = (String)errors.getFieldValue(field);
  int len=0;
  char[] c1 = value.toCharArray();
  for (int i = 0; i < c1.length; i++) {
             int num = c1[i];
            //返回的無符號的二進制數
             String numstr = Integer.toBinaryString(num);
             if (numstr.length() > 8) {//中文字符的時候
              len=len+2;
                }
             else {
              len=len+1;              
             }
         }
  if(len > length) {
            //字符串長度超出時,提示超出
          errors.rejectValue(field, errorCode, errorArgs, defaultMessage);
  }
 }
 
//判斷字符長度的另一個方法

 public static int String_length(String value) {
      int valueLength = 0;
      String chinese = "[\u4e00-\u9fa5]";
      for (int i = 0; i < value.length(); i++) {
           String temp = value.substring(i, i + 1);
           if (temp.matches(chinese)) {
                    valueLength += 2;
           } else {
                    valueLength += 1;
           }
      }
          return valueLength;
 }



 /**
  * 字段超長時駁回.
  * @param errors
  * @param field 字段名.
  * @param length 最大長度.
  * @param errorCode 消息配置文件中的錯誤代碼.
  * @param errorArgs 錯誤參數.
  */
 public static void rejectIfTooLong(Errors errors, String field, Integer length, String errorCode, String errorArgs[]) {
      rejectIfTooLong(errors, field, length, errorCode, errorArgs, null);
 }
 
 /**
  * 字段超長時駁回,length作爲默認消息參數.
  * @param errors.
  * @param field 字段名.
  * @param length 最大長度.
  * @param errorCode 消息配置文件中的錯誤代碼.
  */
 public static void rejectIfTooLong(Errors errors, String field, Integer length, String errorCode) {
      rejectIfTooLong(errors, field, length, errorCode, new String[] {length.toString()}, null);
 }
 
 /**
  * 不匹配正則表達式時駁回.
  * @param errors
  * @param field
  * @param errorCode
  */
 public static void rejectIfMismatchRegex(Errors errors, String field, String regex, String errorCode) {
      String value = (String)errors.getFieldValue(field);
      if(!value.matches(regex)) {
           errors.rejectValue(field, errorCode, null, "");
      }
 }
}

rejectVlaue方法有4個參數:
1. Error Code  顯示錯誤時,將根據錯誤代碼識別錯誤信息類型。

2. Message Key這裏我們可以通過引入MessageSource實現提示信息的參數化,此時,
本參數將用  .properties文件(messages_zh_CN.properties)中的消息索引。(國際化)

3. Error Argument  如果提示信息中需要包含動態信息,則可通過此參數傳遞需要的動態信息對象。
具體參見ApplicationContext中關於國際化實現的描述。
     
4. Default Message  如果在當前MessageSource中沒有發現Message Key對應的信息數據,則以此默認值返回。
這裏我們暫時尚未考慮國際化支持,所有的信息都將通過Default Message返回

  • bg             // 保加利亞語
  • ca             // 加拿大
  • cs             // 捷克語
  • cz              // 捷克語(捷克共和國)
  • da              // 丹麥語
  • de              // 德語
  • en              // 英語
  • es              // 西班牙語
  • fr                // 法語
  • nl                // 荷蘭
  • tr                // 土耳其語
  • zh_CN        // 簡體中文
  • zh_TW        // 繁體中文
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章