java开源验证框架OVAL应用实例

java开源验证框架OVAL应用实例

        

对oval验证框架进行分类,并针对常用的验证规则进行总结,从而可以抽象成模型可以定义,达到定义后自动生成,减少开发人员的工作量,同时也规范化代码结构。

1.  验证分类

验证根据验证对象的类型可以分为字符串验证、数值验证、日期验证、自定义验证,其中自定义验证可以是关联验证或逻辑验证。一般@NotNull规则是所有类型都有可能用到,即不许为空,后面每个类型不再说明,一般和数据库约束保持一致;

 

1.1、  字符串验证

字符串一般验证包括不能为空格(@NotBlank)、长度验证(@Length)以及内容验证。其中内容验证包括@Email、@Url、@HasSubstring以及自定义验证。一般@NotNull、@NotBlank、@Length必须且一起使用。

自定义内容验证可以是@Assert、@MatchPatternCheck、@CheckWith以及@ValidateWithMethod;@Assert使用groovy表达式做字段关联验证、@MatchPatternCheck正则表达式验证、@ValidateWithMethod、@CheckWith是实现业务逻辑验证。

      

1.2、  数值验证

规范中数据库中使用number类型,一般集合使用@Length长度验证。

@Range验证范围有最大值和最小值属性,默认最小值为0,@Range属于内容验证,Range属性有最大值和最小值,可以使用默认值。@NotNegative表示值为非负数,属于内容验证。

       @Length长度应该是number类型的长度加上精度,如果精度大于0,则再加上一位小数点。

       自定义验证同上,单数值没有正在表达式验证。

1.3、  日期验证

日期在开发规范中采用字符串,且长度只有10和19两类,如果需要显示年或年月,建议采用下拉列表框,截取需要显示的部分。控件采用只读模式,则无需长度验证。

@DateRange、@CFuture、@CPast属于内容验证。

自定义验证同上,单数值没有正在表达式验证。

 

2.  验证模型抽象定义

每个字段有多个验证规则;每个规则都有三个常用属性:错误代码、错误消息、前置条件,每个规则有若干个参数。总结如下表格所示:

      

       模型抽象:验证规则的抽象包括规则名称,规则参数,多个参数使用逗号分隔;为了简化,只能添加和删除,不能修改;生成对应的实际注解描述,方便排查错误。

 

 

 

 

参数个数

参数说明

备注

无参

@NotNull、@NotBlank、@Url、@Email

@NotNegative

@CFuture、@CPast

 

两个参数

@Length、@Range、@DateRange

 

max、min

 

@HasSubstring

value

ignoreCase(boolean)

自定义

@Assert有一个expr参数

 

@CheckWith有个value

 

@ValidateWithMethod有methodName参数和参数类型的class,即字段的class

 

@MatchPatternCheck有一个pattern参数

 

 

3.  与jquery validate对应关系

待续,已经有良好思路的请指正。

你可能感兴趣的:(java,正则表达式,验证框架,oval)