struts2的RegexFieldValidator注解的实现

[size=medium]
struts2的RegexFieldValidator注解的实现:
其实主要也是看看validate方法的实现:
[/size]

public void validate(Object object) throws ValidationException {
String fieldName = getFieldName(); // 得到field名称
Object value = this.getFieldValue(fieldName, object); // 得到field的值
//这里我们看到为什么在必填项上面我们还要使用一个RequiredStringValidate
//其实加上很多注解之后感觉代码和不整洁
// if there is no value - don't do comparison
// if a value is required, a required validator should be added to the field
if (value == null || expression == null) {
return;
}

// struts2是有强大的类型转换功能,在验证之前已经有其他的拦截器对
// 对参数做类型转换了
// XW-375 - must be a string
if (!(value instanceof String)) {
return;
}

// 我们看到此时才检验为空的情况,因为现在它肯定是一个string了
// 我估计在写代码的时候,可能在上面就进行判断了。但是这样很简洁
// string must not be empty
String str = ((String) value).trim();
if (str.length() == 0) {
return;
}

// 这里构造Pattern,来判断是不是大小写敏感的。
// match against expression
Pattern pattern;
if (isCaseSensitive()) {
pattern = Pattern.compile(expression);
} else {
pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
}

// 这里又有一个变量,这个实在是想不通,如果不trim,那就直接使用value,
// 如果trim就使用str就行了,不懂为什么又要引入一个compare变量
String compare = (String) value;
if ( trim ) {
compare = compare.trim();
}
Matcher matcher = pattern.matcher( compare );

if (!matcher.matches()) {
addFieldError(fieldName, object);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值