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

DoubleRangeFieldValidator的实现和疑问

发表于: 2010-01-09   作者:asialee   来源:转载   浏览次数:
摘要:    我们使用IntRangeFieldValidator的比较多,今天看了一下 DoubleRangeFieldValidator这个注解,看到有四个参数 minInclusive,maxInclusive,minExclusive,maxExclusive 有点懵,再看一下它的实现: 现在的疑问是我们发现minInclusiveValue和minExclu

   我们使用IntRangeFieldValidator的比较多,今天看了一下 DoubleRangeFieldValidator这个注解,看到有四个参数 minInclusive,maxInclusive,minExclusive,maxExclusive
有点懵,再看一下它的实现:



现在的疑问是我们发现minInclusiveValue和minExclusiveValue是相关的,为什么我们不能把参数变成这样四个参数呢:
String min = null;
String max = null;
boolean includeMin = true;
boolean includeMax = true;


public class DoubleRangeFieldValidator extends FieldValidatorSupport {

    String maxInclusive = null;
    String minInclusive = null;
    String minExclusive = null;
    String maxExclusive = null;

    Double maxInclusiveValue = null;
    Double minInclusiveValue = null;
    Double minExclusiveValue = null;
    Double maxExclusiveValue = null;

    // 这个方法没有什么,主要是把要验证的数转Double,然后在
    // 设置那四个参数,最后进行比较。
    public void validate(Object object) throws ValidationException {
        String fieldName = getFieldName();
        Double value;
        try {
            Object obj = this.getFieldValue(fieldName, object);
            if (obj == null) {
                return;
            }
            value = Double.valueOf(obj.toString());
        } catch (NumberFormatException e) {
            return;
        }

        parseParameterValues();

        // 重点来看一下这个实现,如果设置了maxInclusiveValue,那么该值比它大的时候,
        // 就直接报错,minInclusiveValue道理也是一样的。 maxExclusiveValue实际上是
		// 判断一下包含。
        if ((maxInclusiveValue != null && value.compareTo(maxInclusiveValue) > 0) ||
                (minInclusiveValue != null && value.compareTo(minInclusiveValue) < 0) ||
                (maxExclusiveValue != null && value.compareTo(maxExclusiveValue) >= 0) ||
                (minExclusiveValue != null && value.compareTo(minExclusiveValue) <= 0)) {
            addFieldError(fieldName, object);
        }
    }

    private void parseParameterValues() {
        this.minInclusiveValue = parseDouble(minInclusive);
        this.maxInclusiveValue = parseDouble(maxInclusive);
        this.minExclusiveValue = parseDouble(minExclusive);
        this.maxExclusiveValue = parseDouble(maxExclusive);
    }

    private Double parseDouble (String value) {
        if (value != null) {
            try {
                return Double.valueOf(value);
            } catch (NumberFormatException e) {
                if (log.isWarnEnabled()) {
                    log.warn("DoubleRangeFieldValidator - [parseDouble]: Unable to parse given double parameter " + value);
                }
            }
        }
        return null;
    }

DoubleRangeFieldValidator的实现和疑问

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
需求如下图: 初学maven,有很多地方不知道怎么配置。我现在的需求如上图,请问是不是如下所示来建工
本篇主要记录一下昨天和同事对JQ里取绝对像素值时对runTimeStyle的一处细节的讨论,同时提出自己的
.NET领域驱动设计—初尝(二:疑问、模式、原则、工具、过程、框架、实践) 1.3.原则 精简聚合 分离用
今天有人提问:Object.create疑问,正好最近在翻译 javascript 的文章——javascript的12个怪癖。
1、关于OSStartHighRdy(): OSStart()用以启动OS,将CPU控制权交给OS,并选择当前系统中最高优先级
.NET领域驱动设计—初尝(一:疑问、模式、原则、工具、过程、框架、实践) 1.1.疑问 1.1.1.UML何用 1
2012年8月15号,苏宁京东价格大战打响了。 上午9点,京东商城和苏宁电器分别推出各自的“大家电促销
阅读目录: 1.1.疑问 1.1.1.UML何用 1.1.2.领域建模 1.2.模式 1.3.原则 1.5.过程 1.6.框架 1.7.项目
对SQLSERVER数据库事务日志的疑问 摸不透SQLSERVER了 实验环境:SQLSERVER2005 SP4,Windows7 本来
1. 现象 使用Cacti监控,有关于临时表的一个图形 可以看到正在使用的临时表Active Temp Tables的数
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号