/**
* 扩展的验证工具类.
*@ 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 // 繁体中文