/**
* 擴展的驗證工具類.
*@ 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 // 繁體中文