四、校驗工具

import java.util.ArrayList;
import java.util.List;

import org.springframework.util.Assert;

/**
 * 校驗工具類
 *
 */
public abstract class ValidateUtil {
	
	/** 用戶名正則 */
	private static final String REG_USERNAME = "^[a-zA-Z]\\w{3,31}";
	/** Email 正則 */
	private static final String REG_EMAIL = "\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
	
	/**
	 * 驗證必填項,若是不經過,返回List【錯誤描述信息】
	 * 
	 * @param dataObj 校驗對象
	 * @param propNames 校驗屬性【數組】
	 * @param displayNames 屬性對應的【中文名稱】
	 * @return errorList 錯誤集合,每條數據表示一個屬性的錯誤描述信息
	 */
	public static List<String> validateMust(Object dataObj, String[] propNames,
			String[] displayNames) {
		Assert.isTrue(propNames.length == displayNames.length, "參數名與顯示名的個數不一致");
		List<String> errorList = new ArrayList<String>();
		for (int i = 0; i < propNames.length; i++) {
			String propName = propNames[i];
			String displayName = displayNames[i];
			Object value = ReflectUtil.getProperty(dataObj, propName);
			if (null == value) {
				errorList.add(displayName + "(" + propName + ")是必填項");
			} else {
				if (value instanceof String) {
					// 處理全角空格
					String valueStr = value.toString().replace(" ", "").trim();
					if (valueStr.length() == 0) {
						errorList.add(displayName + "(" + propName + ")是必填項");
					}
				}
			}
		}
		return errorList;
	}
	
	/**
	 * 
	 * 校驗郵箱
	 * 
	 * @param email
	 * @return boolean
	 */
	public static boolean validateEmail(String email) {
		if (null == email || email.trim().length() == 0) {
			return false;
		}
		return email.matches(REG_EMAIL);
	}

	/**
	 * 
	 * 校驗用戶名
	 * 
	 * @param
	 * @return boolean
	 */
	public static boolean validateUserName(String userName) {
		return validateByRegex(userName, REG_USERNAME);
	}

	/**
	 * 按指定正則表達式驗證
	 * @param input 輸入字符
	 * @param regex 正則
	 * @return 成立與否
	 */
	private static boolean validateByRegex(String input, String regex) {
		if (null == input || input.trim().length() == 0) {
			return false;
		}
		return input.matches(regex);
	}

}
相關文章
相關標籤/搜索