struts扩展validator功能的一些方法

package cn.bestwiz.jhf.common.admin.common;

import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.text.ParseException;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import org.apache.commons.logging.Log;
import org.apache.commons.validator.GenericValidator;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.validator.ValidatorForm;
import cn.bestwiz.jhf.common.admin.common.util.ValidatorUtil;
import cn.bestwiz.jhf.core.util.LogUtil;

/**
* ActionForm's Base Class. 扩展validator功能
*
* @author jiayj198609
*
*
* @copyright
*/
public abstract class BaseForm extends ValidatorForm {

protected static final Log logger = LogUtil.getLog(BaseForm.class);

protected static final int CUSTOMERID_LENGTH = 8;

@Override
public String toString() {

return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE);
}

@Override
public boolean equals(Object o) {

return EqualsBuilder.reflectionEquals(this, o);
}

@Override
public int hashCode() {

return HashCodeBuilder.reflectionHashCode(this);
}

/**
* 去除所有字段中首尾多余的空格
*
* @author jiayj198609
*/
@SuppressWarnings("unchecked")
public void trimAll() {

cn.bestwiz.jhf.core.util.BeanUtils.trimAll(this);
}

/* ======== 公用校验方法 begin ======== */

/**
* 校验字符串是否为空(null、""或只包含空格),为空则报错
*
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateBlank(String key, String str) {

return validateBlank(null, key, str);
}

/**
* 校验字符串是否为空(null、""或只包含空格),为空则报错 (错误消息中显示项目的ID)
*
* @param id
* 项目的ID
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateBlank(String id, String key, String str) {

ActionErrors errors = new ActionErrors();

String name = StrutsResources.getMessage("form." + key);

if (!GenericValidator.isBlankOrNull(id)) {
name = name + "[" + id + "]";
}

if (GenericValidator.isBlankOrNull(str)) {
errors.add(key, new ActionMessage("errors.required", name));
return errors;
}

return errors;
}

/**
* 校验字符串是否为空(null或""),为空则报错
*
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateEmpty(String key, String str) {

return validateEmpty(null, key, str);
}

/**
* 校验字符串是否为空(null或""),为空则报错 (错误消息中显示项目的ID)
*
* @param id
* 项目的ID
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateEmpty(String id, String key, String str) {

ActionErrors errors = new ActionErrors();

String name = StrutsResources.getMessage("form." + key);

if (!GenericValidator.isBlankOrNull(id)) {
name = name + "[" + id + "]";
}

if (StringUtils.isEmpty(str)) {
errors.add(key, new ActionMessage("errors.required", name));
return errors;
}

return errors;
}

/**
* 验证字符串的字节长度是否合法
*
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容 (应为半角字符串)
* @param minlength
* 最小长度 (字符串的字节长度)。如果小于等于0,则不限制最小长度
* @param maxlength
* 最大长度 (字符串的字节长度)。如果小于0,则不限制最大长度
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateByteLength(String key, String str, int minlength, int maxlength) {

return validateByteLength(null, key, str, minlength, maxlength);
}

/**
* 验证字符串的字节长度是否合法 (错误消息中显示项目的ID)
*
* @param id
* 项目的ID
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容 (应为半角字符串)
* @param minlength
* 最小长度 (字符串的字节长度)。如果小于等于0,则不限制最小长度
* @param maxlength
* 最大长度 (字符串的字节长度)。如果小于0,则不限制最大长度
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateByteLength(String id, String key, String str, int minlength, int maxlength) {

return validateLength(id, key, str, minlength, maxlength, true);
}

/**
* 验证字符串的字符长度是否合法
*
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
* @param minlength
* 最小长度 (字符串的字符长度)。如果小于等于0,则不限制最小长度
* @param maxlength
* 最大长度 (字符串的字符长度)。如果小于0,则不限制最大长度
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateCharLength(String key, String str, int minlength, int maxlength) {

return validateCharLength(null, key, str, minlength, maxlength);
}

/**
* 验证字符串的字符长度是否合法 (错误消息中显示项目的ID)
*
* @param id
* 项目的ID
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
* @param minlength
* 最小长度 (字符串的字符长度)。如果小于等于0,则不限制最小长度
* @param maxlength
* 最大长度 (字符串的字符长度)。如果小于0,则不限制最大长度
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateCharLength(String id, String key, String str, int minlength, int maxlength) {

return validateLength(id, key, str, minlength, maxlength, false);
}

/**
* 验证字符串的长度是否合法 (错误消息中显示项目的ID)
*
* @param id
* 项目的ID
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
* @param minlength
* 最小长度(字节长度或字符长度)。如果小于等于0,则不限制
* @param maxlength
* 最大长度(字节长度或字符长度)。如果小于0,则不限制
* @param isHalfWidth
* 是否按半角(即字节长度)进行校验,为true,则校验其字节长度,否则校验其字符长度
*
* @return ActionErrors
*
* @author jiayj198609
*/
private ActionErrors validateLength(String id, String key, String str, int minlength, int maxlength,
boolean isHalfWidth) {

ActionErrors errors = new ActionErrors();

String name = StrutsResources.getMessage("form." + key);

if (!GenericValidator.isBlankOrNull(id)) {
name = name + "[" + id + "]";
}

if (isHalfWidth) {
errors.add(validateHalfWidth(id, key, str));
} else {
errors.add(validateEmpty(id, key, str));
}

if (!errors.isEmpty()) {
return errors;
}

int length = str.length();

if (maxlength > 0 && maxlength == minlength && length != maxlength) {
errors.add(key + "FixedLength", new ActionMessage("errors.fixedLength", name, maxlength + ""));
return errors;
}

if (maxlength > 0 && length > maxlength) {
errors.add(key + "Maxlength", new ActionMessage("errors.maxlength", name, maxlength + ""));
return errors;
}

if (length < minlength) {
errors.add(key + "Minlength", new ActionMessage("errors.minlength", name, minlength + ""));
return errors;
}

return errors;
}

/**
* 验证字符串的长度是否合法
*
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateHalfWidth(String key, String str) {

return validateHalfWidth(null, key, str);
}

/**
* 验证字符串的长度是否合法 (错误消息中显示项目的ID)
*
* @param id
* 项目的ID
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateHalfWidth(String id, String key, String str) {

ActionErrors errors = new ActionErrors();

String name = StrutsResources.getMessage("form." + key);

if (!GenericValidator.isBlankOrNull(id)) {
name = name + "[" + id + "]";
}

errors.add(validateEmpty(id, key, str));

if (!errors.isEmpty()) {
return errors;
}

int length = str.length();

if (length != ValidatorUtil.checkLength(str)) {
errors.add(key + "Word", new ActionMessage("errors.halfwidthchar", name));
return errors;
}

return errors;
}

/**
* 验证半角整数 (视为数字而非文本字符串)
*
* @param decimal
* 输入的内容
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param maxlength
* 最大长度 (字符串的字节长度)。如果小于0,则不限制最大长度
* @param min
* 最小值。如为null,则不限制。
* @param max
* 最大值。如为null,则不限制。
* @return ActionErrors
*/
protected ActionErrors validateHalfWidthInteger(String decimal, String key, int maxlength, String min, String max) {

return validateHalfWidthInteger(null, decimal, key, maxlength, min, max);
}

/**
* 验证半角整数 (视为数字而非文本字符串) (错误消息中显示项目的ID)
*
* @param id
* 项目的ID
* @param decimal
* 输入的内容
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param maxlength
* 最大长度 (字符串的字节长度)。如果小于0,则不限制最大长度
* @param min
* 最小值。如为null,则不限制。
* @param max
* 最大值。如为null,则不限制。
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateHalfWidthInteger(String id, String decimal, String key, int maxlength, String min,
String max) {

return validateHalfWidthDigit(id, decimal, key, maxlength, -1, 0, min, max);
}

/**
* 验证半角数字 (视为数字而非文本字符串) (不限定整数小数)
*
* @param decimal
* 输入的内容
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param maxlength
* 最大长度 (字符串的字节长度)。如果小于0,则不限制最大长度
* @param min
* 最小值。如为null,则不限制。
* @param max
* 最大值。如为null,则不限制。
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateHalfWidthDigit(String decimal, String key, int maxlength, String min, String max) {

return validateHalfWidthDigit(null, decimal, key, maxlength, min, max);
}

/**
* 验证半角数字 (视为数字而非文本字符串) (不限定整数小数) (错误消息中显示项目的ID)
*
* @param id
* 项目的ID
* @param decimal
* 输入的内容
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param maxlength
* 最大长度 (字符串的字节长度)。如果小于0,则不限制最大长度
* @param min
* 最小值。如为null,则不限制。
* @param max
* 最大值。如为null,则不限制。
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateHalfWidthDigit(String id, String decimal, String key, int maxlength, String min,
String max) {

return validateHalfWidthDigit(id, decimal, key, maxlength, -1, -1, min, max);
}

/**
* 验证半角数字 (视为数字而非文本字符串)
*
* @param decimal
* 输入的内容
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param maxlength
* 最大长度 (字符串的字节长度)。如果小于0,则不限制。
* @param maxIntLength
* 整数部分最大位数。如果小于0,则不限制。
* @param maxDecLength
* 小数部分最大位数。如果小于0,则不限制。
* @param min
* 最小值。如为null,则不限制。
* @param max
* 最大值。如为null,则不限制。
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateHalfWidthDigit(String decimal, String key, int maxlength, int maxIntLength,
int maxDecLength, String min, String max) {

return validateHalfWidthDigit(null, decimal, key, maxlength, maxIntLength, maxDecLength, min, max);
}

/**
* 验证半角数字 (视为数字而非文本字符串) (错误消息中显示项目的ID)
*
* @param id
* 项目的ID
* @param decimal
* 输入的内容
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param maxlength
* 最大长度 (字符串的字节长度)。如果小于0,则不限制。
* @param maxIntLength
* 整数部分最大位数。如果小于0,则不限制。
* @param maxDecLength
* 小数部分最大位数。如果小于0,则不限制。
* @param min
* 最小值。如为null,则不限制。
* @param max
* 最大值。如为null,则不限制。
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateHalfWidthDigit(String id, String decimal, String key, int maxlength,
int maxIntLength, int maxDecLength, String min, String max) {

ActionErrors errors = new ActionErrors();
BigDecimal num = null;
String name = StrutsResources.getMessage("form." + key);

if (!GenericValidator.isBlankOrNull(id)) {
name = name + "[" + id + "]";
}

errors.add(validateEmpty(id, key, decimal));

if (!errors.isEmpty()) {
return errors;
}

errors.add(validateByteLength(id, key, decimal, 0, maxlength));

if (!errors.isEmpty()) {
return errors;
}

try {
num = new BigDecimal(decimal);

int precision = num.precision();
int scale = num.scale();
int intLen = precision - scale;

if (maxIntLength >= 0 && intLen > maxIntLength) {
errors.add(key + "Maxlength", new ActionMessage("errors.maxIntLength", name, maxIntLength));
return errors;
}

if (maxDecLength > 0 && scale > maxDecLength) {
errors.add(key + "Maxlength", new ActionMessage("errors.maxDecLength", name, maxDecLength));
return errors;
} else if (maxDecLength == 0 && (scale > maxDecLength || !(num.toPlainString()).equals(decimal))) {
errors.add(key + "Integer", new ActionMessage("errors.integer", name));
return errors;
}

if (!errors.isEmpty()) {
return errors;
}
} catch (Exception e) {
errors.add(key + "Word", new ActionMessage("errors.halfwidthdigit", name));
return errors;
}

if (!errors.isEmpty()) {
return errors;
}

if (num != null) {

BigDecimal minnum = null, maxnum = null;

if (min != null) {
minnum = new BigDecimal(min);
}

if (max != null) {
maxnum = new BigDecimal(max);
}

boolean validMin = (min != null && num.compareTo(minnum) < 0);
boolean validMax = (max != null && num.compareTo(maxnum) > 0);

if ((min != null && max != null) && (validMin || validMax)) {
String errorKey;

if (maxDecLength == 0) {
errorKey = "errors.intrange";
} else {
errorKey = "errors.numrange";
}

errors.add(key + "Range", new ActionMessage(errorKey, name, min + "", max + ""));

return errors;
} else if (validMax) {
errors.add(key + "Range", new ActionMessage("errors.numMax", name, max));
return errors;
} else if (validMin) {
errors.add(key + "Range", new ActionMessage("errors.numMin", name, min));
return errors;
}
}

return errors;
}

/**
* 验证单个的日期是否合法
*
* @param date
* 输入的内容
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param format
* 日期的合法格式
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateDate(String date, String key, String format) {

return validateDate(null, date, key, format);
}

/**
* 验证单个的日期是否合法 (错误消息中显示项目的ID)
*
* @param id
* 项目的ID
* @param date
* 输入的内容
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param format
* 日期的合法格式
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateDate(String id, String date, String key, String format) {

ActionErrors errors = new ActionErrors();
String name = StrutsResources.getMessage("form." + key);

if (!GenericValidator.isBlankOrNull(id)) {
name = name + "[" + id + "]";
}

errors.add(validateEmpty(id, key, date));

if (!errors.isEmpty()) {
return errors;
}

if (format.length() != ValidatorUtil.checkLength(date)) {
errors.add(key + "Format", new ActionMessage("errors.invalidformat", name, format));
return errors;
}

try {
if (!ValidatorUtil.isValidDateFormat(date, format)) {
if (!ValidatorUtil.isLatin(date)) {
errors.add(key + "Format", new ActionMessage("errors.invalidformat", name, format));
return errors;
}
errors.add(key + "Value", new ActionMessage("errors.invalidValue", name));
return errors;

}
} catch (ParseException e) {
errors.add(key + "Format", new ActionMessage("errors.invalidformat", name, format));
return errors;
}

return errors;
}

/**
* 验证枚举值是否合法 (该值是否在该枚举类的定义中)
*
* @param clazz
* 枚举类Class
* @param value
* 输入的值
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateEnum(Class clazz, String value, String key) {

return validateEnum(null, clazz, value, key);
}

/**
* 验证枚举值是否合法 (该值是否在该枚举类的定义中) (错误消息中显示项目的ID)
*
* @param id
* 项目的ID
* @param clazz
* 枚举类Class
* @param value
* 输入的值
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @return ActionErrors
*
* @author jiayj198609
*/
@SuppressWarnings("unchecked")
protected ActionErrors validateEnum(String id, Class clazz, String value, String key) {

ActionErrors errors = new ActionErrors();
String name = StrutsResources.getMessage("form." + key);

if (!GenericValidator.isBlankOrNull(id)) {
name = name + "[" + id + "]";
}

errors.add(validateEmpty(id, key, value));

if (!errors.isEmpty()) {
return errors;
}

Object obj = null;

Method met = null;

try {
met = clazz.getMethod("getEnum", int.class);
obj = met.invoke(null, Integer.parseInt(value));

if (obj == null) {
errors.add(key, new ActionMessage("errors.invalid", name));
return errors;
}
} catch (NoSuchMethodException e) {
} catch (NumberFormatException e) {
if (met != null) {
errors.add(key, new ActionMessage("errors.invalid", name));
return errors;
}
} catch (Exception e) {
errors.add(key, new ActionMessage("errors.invalid", name));
return errors;
}

if (obj == null) {
try {
met = clazz.getMethod("getEnum", String.class);
obj = met.invoke(null, value);
} catch (Exception e) {
errors.add(key, new ActionMessage("errors.invalid", name));
return errors;
}
}

if (obj == null) {
errors.add(key, new ActionMessage("errors.invalid", name));
return errors;
}

return errors;
}

/**
* 验证半角英数
*
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
* @param maxlength
* 最大长度 (字符串的字节长度)
* @param minlength
* 最小长度 (字符串的字节长度)
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateHalfWidthDigitorAlpha(String key, String str, int maxlength, int minlength) {

return validateHalfWidthDigitorAlpha(null, key, str, maxlength, minlength);
}

/**
* 验证半角英数 (错误消息中显示项目的ID)
*
* @param id
* 项目的ID
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
* @param maxlength
* 最大长度 (字符串的字节长度)
* @param minlength
* 最小长度 (字符串的字节长度)
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateHalfWidthDigitorAlpha(String id, String key, String str, int maxlength, int minlength) {

ActionErrors errors = new ActionErrors();

String name = StrutsResources.getMessage("form." + key);

if (!GenericValidator.isBlankOrNull(id)) {
name = name + "[" + id + "]";
}

errors.add(validateEmpty(id, key, str));

if (!errors.isEmpty()) {
return errors;
}

errors.add(validateByteLength(id, key, str, minlength, maxlength));

if (!errors.isEmpty()) {
return errors;
}

if (!ValidatorUtil.isHalfWidthDigitorAlpha(str)) {
errors.add(key + "Word", new ActionMessage("errors.halfwidthenanddigit", name));
return errors;
}

return errors;
}

/**
* 验证半角整数 (视为字符串而非数字,即允许多余的0)
*
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
* @param maxlength
* 最大长度 (字符串的字节长度)
* @param minlength
* 最小长度 (字符串的字节长度)
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateHalfWidthDigitorStr(String key, String str, int maxlength, int minlength) {

return validateHalfWidthDigitorStr(null, key, str, maxlength, minlength);
}

/**
* 验证半角整数 (视为字符串而非数字,即允许多余的0)
*
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
* @param maxlength
* 最大长度 (字符串的字节长度)
* @param minlength
* 最小长度 (字符串的字节长度)
* @param min
* 最小值。如为null,则不限制。
* @param max
* 最大值。如为null,则不限制。
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateHalfWidthDigitorStr(String key, String str, int maxlength, int minlength,
String min, String max) {

return validateHalfWidthDigitorStr(null, key, str, maxlength, minlength, min, max);
}

/**
* 验证半角整数 (视为字符串而非数字,即允许多余的0) (错误消息中显示项目的ID)
*
* @param id
* 项目的ID
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
* @param maxlength
* 最大长度 (字符串的字节长度)
* @param minlength
* 最小长度 (字符串的字节长度)
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateHalfWidthDigitorStr(String id, String key, String str, int maxlength, int minlength) {

return validateHalfWidthDigitorStr(id, key, str, maxlength, minlength, null, null);
}

/**
* 验证半角整数 (视为字符串而非数字,即允许多余的0) (错误消息中显示项目的ID)
*
* @param id
* 项目的ID
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
* @param maxlength
* 最大长度 (字符串的字节长度)
* @param minlength
* 最小长度 (字符串的字节长度)
* @param min
* 最小值。如为null,则不限制。
* @param max
* 最大值。如为null,则不限制。
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateHalfWidthDigitorStr(String id, String key, String str, int maxlength, int minlength,
String min, String max) {

ActionErrors errors = new ActionErrors();

String name = StrutsResources.getMessage("form." + key);

if (!GenericValidator.isBlankOrNull(id)) {
name = name + "[" + id + "]";
}

errors.add(validateEmpty(id, key, str));

if (!errors.isEmpty()) {
return errors;
}

errors.add(validateByteLength(id, key, str, minlength, maxlength));

if (!errors.isEmpty()) {
return errors;
}

if (!ValidatorUtil.isHalfWidthDigit(str)) {
errors.add(key + "Word", new ActionMessage("errors.halfwidthdigit", name));
return errors;
}

return validateHalfWidthDigit(id, str, key, maxlength, min, max);
}

/**
* 验证全角字符串
*
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
* @param maxlength
* 最大长度 (字符串的字符长度)
* @param minlength
* 最小长度 (字符串的字符长度)
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateFullWidthStr(String key, String str, int maxlength, int minlength) {

return validateFullWidthStr(null, key, str, maxlength, minlength);
}

/**
* 验证全角字符串 (错误消息中显示项目的ID)
*
* @param id
* 项目的ID
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
* @param maxlength
* 最大长度 (字符串的字符长度)
* @param minlength
* 最小长度 (字符串的字符长度)
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateFullWidthStr(String id, String key, String str, int maxlength, int minlength) {

ActionErrors errors = new ActionErrors();

String name = StrutsResources.getMessage("form." + key);

if (!GenericValidator.isBlankOrNull(id)) {
name = name + "[" + id + "]";
}

errors.add(validateEmpty(id, key, str));

if (!errors.isEmpty()) {
return errors;
}

errors.add(validateCharLength(id, key, str, minlength, maxlength));

if (!errors.isEmpty()) {
return errors;
}

if (str.length() == ValidatorUtil.checkLength(str) || !ValidatorUtil.isFullWidth(str)) {
errors.add(key + "Word", new ActionMessage("errors.fullwidthchar", name));
return errors;
}

return errors;
}

/**
* 校验全角假名内容
*
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
* @param maxlength
* 最大长度 (字符串的字节长度)
* @param minlength
* 最小长度 (字符串的字节长度)
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateFullWidthKana(String key, String str, int maxlength, int minlength) {

ActionErrors errors = new ActionErrors();

String name = StrutsResources.getMessage("form." + key);

errors.add(validateEmpty(null, key, str));

if (!errors.isEmpty()) {
return errors;
}

errors.add(validateCharLength(null, key, str, minlength, maxlength));

if (!errors.isEmpty()) {
return errors;
}

if (str.length() == ValidatorUtil.checkLength(str) || !ValidatorUtil.isFullWidthKana(str)) {
errors.add(key + "Word", new ActionMessage("errors.fullwidthkanaword", name));
return errors;
}

return errors;
}

/**
* 校验片假名内容
*
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
* @param maxlength
* 最大长度 (字符串的字节长度)
* @param minlength
* 最小长度 (字符串的字节长度)
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateHirahiramei(String key, String str, int maxlength, int minlength) {

ActionErrors errors = new ActionErrors();

String name = StrutsResources.getMessage("form." + key);

errors.add(validateEmpty(null, key, str));

if (!errors.isEmpty()) {
return errors;
}

errors.add(validateCharLength(null, key, str, minlength, maxlength));

if (!errors.isEmpty()) {
return errors;
}

if (!ValidatorUtil.isHirahiramei(str)) {
errors.add(key + "Word", new ActionMessage("errors.hirahirameiword", name));
return errors;
}

return errors;
}

/**
* 校验全角文字或半角英数内容
*
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
* @param maxlength
* 最大长度 (字符串的字节长度)
* @param minlength
* 最小长度 (字符串的字节长度)
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateFullWidthStrOrHalfWidthDigitorAlpha(String key, String str, int maxlength,
int minlength) {

ActionErrors errors = new ActionErrors();

String name = StrutsResources.getMessage("form." + key);

errors.add(validateEmpty(null, key, str));

if (!errors.isEmpty()) {
return errors;
}

errors.add(validateCharLength(null, key, str, minlength, maxlength));

if (!errors.isEmpty()) {
return errors;
}

int length = str.length();

for (int i = 0; i < length; i++) {
char chr = str.charAt(i);

if (!ValidatorUtil.isFullWidth(chr) && !ValidatorUtil.isHalfWidthDigit(chr)
&& !ValidatorUtil.isHalfWidthAlpha(chr)) {
errors.add(key + "Word", new ActionMessage("errors.fullwidthcharOrHalfwidthenanddigit", name));
return errors;
}

}

return errors;
}

/**
* 验证半角英文
*
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
* @param maxlength
* 最大长度 (字符串的字节长度)
* @param minlength
* 最小长度 (字符串的字节长度)
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateHalfWidthAlpha(String key, String str, int maxlength, int minlength) {

return validateHalfWidthAlpha(null, key, str, maxlength, minlength);
}

/**
* 验证半角英文 (错误消息中显示项目的ID)
*
* @param id
* 项目的ID
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param str
* 输入的内容
* @param maxlength
* 最大长度 (字符串的字节长度)
* @param minlength
* 最小长度 (字符串的字节长度)
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateHalfWidthAlpha(String id, String key, String str, int maxlength, int minlength) {

ActionErrors errors = new ActionErrors();

String name = StrutsResources.getMessage("form." + key);

if (!GenericValidator.isBlankOrNull(id)) {
name = name + "[" + id + "]";
}

errors.add(validateEmpty(id, key, str));

if (!errors.isEmpty()) {
return errors;
}

errors.add(validateByteLength(id, key, str, minlength, maxlength));

if (!errors.isEmpty()) {
return errors;
}

if (!ValidatorUtil.isHalfWidthAlpha(str)) {
errors.add(key + "Word", new ActionMessage("errors.halfwidthalpha", name));
return errors;
}

return errors;
}

/* ======== 公用校验方法 end ======== */

/* ======== 常用属性校验方法 begin ======== */

/**
* 验证口座番号是否合法 (应为9位半角整数)
*
* @param customerId
* 口座番号
*
* @return ActionErrors
*
* @author yaolin <yaolin@bestwiz.cn>
*/
protected ActionErrors validateCustomerId(String customerId) {

String key = "customer_id";

return validateCustomerId(key, customerId);
}

/**
* 验证口座番号是否合法 (应为9位半角整数)
*
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param customerId
* 口座番号
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateCustomerId(String key, String customerId) {

return validateHalfWidthDigitorStr(key, customerId, CUSTOMERID_LENGTH, CUSTOMERID_LENGTH);
}

/**
* 验证口座番号是否合法 (应为9位半角整数)
*
* @param customerId
* 口座番号
*
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateCustomerIdOrLoginId(String customerId) {

String key = "customer_id";

return validateCustomerIdOrLoginId(key, customerId);
}

/**
* 验证口座番和社内使用的ID号是否合法 (应为9位半角整数)
*
* @param key
* 该项属性key (根据form.key从消息映射文件中获取属性名称)
* @param customerId
* 口座番号
* @return ActionErrors
*
* @author jiayj198609
*/
protected ActionErrors validateCustomerIdOrLoginId(String key, String customerId) {

return validateHalfWidthDigitorAlpha(key, customerId, CUSTOMERID_LENGTH, CUSTOMERID_LENGTH);
}
/* ======== 常用属性校验方法 end ======== */
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值