当前位置:首页 > 开发 > 系统架构 > 架构 > 正文

struts2的RegexFieldValidator注解的实现

发表于: 2010-01-08   作者:asialee   来源:转载   浏览:
摘要: struts2的RegexFieldValidator注解的实现: 其实主要也是看看validate方法的实现: public void validate(Object object) throws ValidationException { String fieldName = getFieldName(); // 得到field名称 Obje

struts2的RegexFieldValidator注解的实现:
其实主要也是看看validate方法的实现:

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);
        }
    }

struts2的RegexFieldValidator注解的实现

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号