扩展的验证工具类

/**
 * 扩展的验证工具类.
*@ 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        // 繁体中文
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章