Annotation-driven

<mvc:annotation-driven /> 會自註冊RequestMappingHandlerMappingRequestMappingHandlerAdapter ExceptionHandlerExceptionResolver 三個bean
將提供如下支持:
支持使用 ConversionService 參數轉換
支持使用 @NumberFormat annotation@DateTimeFormat註解完成數據型的格式化
支持使用 @Valid 註解JavaBean JSR 303 驗證
支持使用 @RequestBody @ResponseBody 註解
java

Spring MVC 反射機制標處理方法行解析,將求消息定到理方法的入參中。數據定的核心部件是DataBinder git

數據定流程
• 1. Spring MVC 主框架將 ServletRequest 象及目方法的入參傳遞給 WebDataBinderFactory 例,以DataBinder
• 2. DataBinder 調用裝配在 Spring MVC 上下文中的ConversionService 數據轉換、數據格式化工做。將 Servlet 中的求信息填充到入參象中
• 3. 調Validator 經綁定了求消息的入參行數據合法性校,並最生成數據BindingData
• 4. Spring MVC 抽取 BindingResult 中的入參象和校驗錯誤對象,將它們賦給處理方法的響應入參
正則表達式

 

@InitBinder
@InitBinder 標識的方法,能夠WebDataBinder 行初始化WebDataBinder DataBinder 的子,用於完成由表字段到 JavaBean 屬性的
@InitBinder方法不能有返回,它必聲明void
@InitBinder方法的參數一般是是 WebDataBinder
spring

 

數據校驗數組

<mvc:annotation-driven/> 會默裝配好一個LocalValidatorFactoryBean,通理方法的入參上@valid 註解便可Spring MVC 在完成數據定後行數據校的工做
在已經標注了 JSR303 註解的表/命令象前注一個@ValidSpring MVC 框架在將求參數定到入參象後,就會調用校框架根據註解聲明的校驗規則實施校
• Spring MVC 是通過對處理方法名的規約來保存校驗結果的:前一個表/命令象的校驗結果保存到隨後的入參中,個保存校驗結果的入參必BindingResult
Errors 型,這兩都位於org.springframework.validation 包中
mvc

Spring MVC 就會施校並將校驗結果保存在被校入參象以後的 BindingResult Errors 入參中。
經常使用方法:
FieldError getFieldError(String field)
List<FieldError> getFieldErrors()
Object getFieldValue(String field)
Int getErrorCount()
app

內置的驗證約束註解以下表所示(摘自hibernate validator reference):框架

驗證註解spa

驗證的數據類型hibernate

說明

@AssertFalse

Boolean,boolean

驗證註解的元素值是false

@AssertTrue

Boolean,boolean

驗證註解的元素值是true

@NotNull

任意類型

驗證註解的元素值不是null

@Null

任意類型

驗證註解的元素值是null

@Min(value=值)

BigDecimal,BigInteger, byte,

short, int, long,等任何Number或CharSequence(存儲的是數字)子類型

驗證註解的元素值大於等於@Min指定的value值

@Max(value=值)

和@Min要求同樣

驗證註解的元素值小於等於@Max指定的value值

@DecimalMin(value=值)

和@Min要求同樣

驗證註解的元素值大於等於@ DecimalMin指定的value值

@DecimalMax(value=值)

和@Min要求同樣

驗證註解的元素值小於等於@ DecimalMax指定的value值

@Digits(integer=整數位數, fraction=小數位數)

和@Min要求同樣

驗證註解的元素值的整數位數和小數位數上限

@Size(min=下限, max=上限)

字符串、Collection、Map、數組等

驗證註解的元素值的在min和max(包含)指定區間以內,如字符長度、集合大小

@Past

java.util.Date,

java.util.Calendar;

Joda Time類庫的日期類型

驗證註解的元素值(日期類型)比當前時間早

@Future

與@Past要求同樣

驗證註解的元素值(日期類型)比當前時間晚

@NotBlank

CharSequence子類型

驗證註解的元素值不爲空(不爲null、去除首位空格後長度爲0),不一樣於@NotEmpty,@NotBlank只應用於字符串且在比較時會去除字符串的首位空格

@Length(min=下限, max=上限)

CharSequence子類型

驗證註解的元素值長度在min和max區間內

@NotEmpty

CharSequence子類型、Collection、Map、數組

驗證註解的元素值不爲null且不爲空(字符串長度不爲0、集合大小不爲0)

@Range(min=最小值, max=最大值)

BigDecimal,BigInteger,CharSequence, byte, short, int, long等原子類型和包裝類型

驗證註解的元素值在最小值和最大值之間

@Email(regexp=正則表達式,

flag=標誌的模式)

CharSequence子類型(如String)

驗證註解的元素值是Email,也能夠經過regexp和flag指定自定義的email格式

@Pattern(regexp=正則表達式,

flag=標誌的模式)

String,任何CharSequence的子類型

驗證註解的元素值與指定的正則表達式匹配

@Valid

任何非原子類型

指定遞歸驗證關聯的對象;

如用戶對象中有個地址對象屬性,若是想在驗證用戶對象時一塊兒驗證地址對象的話,在地址對象上加@Valid註解便可級聯驗證

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息