springmvc的@Validated注解使用
1. 校驗(yàn)的錯(cuò)誤信息, 可以直接在bean屬性上配置, 也可以在properties中配置。
2. 將校驗(yàn)器bean配置到注解驅(qū)動(dòng)上
3. 在需要校驗(yàn)的pojo前邊添加@Validated,在需要校驗(yàn)的pojo后邊添加BindingResult bindingResult接收校驗(yàn)出錯(cuò)信息
注意:@Validated和BindingResult bindingResult是配對(duì)出現(xiàn),并且形參順序是固定的(一前一后)。
使用validated所需配置:
1. jar包
2. application.xml
<!-- validated 校驗(yàn)配置start -->
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" >
<!-- 提供檢驗(yàn)機(jī)制的類(lèi): 此處用的而是Hibernate校驗(yàn)器,但是跟Hibernate沒(méi)有關(guān)系 -->
<property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
<!-- 指定校驗(yàn)的使用的資源文件, 如果不需要額外的錯(cuò)誤配置文件,就不用配置該屬性,
在配置文件中配置k-v的錯(cuò)誤提示信息,如果不指定則使用默認(rèn)配置:classpath下的ValidationMessages.properties -->
<property name="validationMessageSource" ref="messoreSources" />
</bean>
<!-- 額外錯(cuò)誤信息文件配置 -->
<bean id="messoreSources" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<!-- 錯(cuò)誤信息資源文件, 不需要寫(xiě)后綴, 默認(rèn)后綴為.properties -->
<property name="basenames">
<list>
<value>classpath:testErrMessages</value>
</list>
</property>
<!-- 錯(cuò)誤信息文件編碼方式 -->
<property name="fileEncodings" value="utf-8" />
<!-- 錯(cuò)誤信息文件緩存時(shí)間 -->
<property name="cacheSeconds" value="120" />
</bean>
<!-- validated 校驗(yàn)配置end -->
<!-- 注解驅(qū)動(dòng),替換處理器映射器、處理器適配器 -->
<mvc:annotation-driven validator="validator" />
3. testErrMessage.properties文件
文件結(jié)構(gòu):
文件內(nèi)容:
4. bean的配置, 省略get/set方法
public class ValidBean { //直接配置錯(cuò)誤信息 @NotBlank(message="用戶名不能為空", groups= {UserGroup1.class}) private String name; @Max(value=120, message="年齡最大為120") private Integer age; // 使用配置文件中的錯(cuò)誤信息, properties中的key: message="{key}"。 {}:占位符 @NotBlank(message="{validator.user.address}") private String address; }
5. controller
@Controller @RequestMapping("/test/") public class ValidTestController { /** * * @desc: 校驗(yàn)沒(méi)有分組的屬性 * @auth: zona * 2017年2月19日 下午2:35:42 * @param bean * @param bindingResult * @return */ @RequestMapping("valid") @ResponseBody public Result testValid(@Validated ValidBean bean, BindingResult bindingResult) { Result result = new Result(); Map retMap = new HashMap(); StringBuilder sb = new StringBuilder(); if(bindingResult.hasErrors()) { List<ObjectError> errors = bindingResult.getAllErrors(); for (ObjectError err : errors) { sb.append(err.getDefaultMessage()+"; "); } result.setErrInfo(sb.toString()); result.setErrNo(1); return result; } retMap.put("bean", bean); result.success(); result.setData(retMap); return result; } /** * * @desc: 僅對(duì)屬于userGroup組的屬性進(jìn)行校驗(yàn) * @auth: zona * 2017年2月19日 下午2:37:03 * @param bean * @param bindingResult * @return */ @RequestMapping("group/valid") @ResponseBody public Result testGroupValid(@Validated(value=UserGroup1.class) ValidBean bean, BindingResult bindingResult) { Result result = new Result(); Map retMap = new HashMap(); StringBuilder sb = new StringBuilder(); if(bindingResult.hasErrors()) { List<ObjectError> errors = bindingResult.getAllErrors(); for (ObjectError err : errors) { sb.append(err.getDefaultMessage()+"; "); } result.setErrInfo(sb.toString()); result.setErrNo(1); return result; } retMap.put("bean", bean); result.success(); result.setData(retMap); return result; } }
測(cè)試結(jié)果:
只校驗(yàn)沒(méi)有分組的屬性
校驗(yàn)UserGroup1組的屬性
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java中HashSet、LinkedHashSet和TreeSet區(qū)別詳解
這篇文章主要介紹了Java中HashSet、LinkedHashSet和TreeSet區(qū)別詳解,如果你需要一個(gè)訪問(wèn)快速的Set,你應(yīng)該使用HashSet,當(dāng)你需要一個(gè)排序的Set,你應(yīng)該使用TreeSet,當(dāng)你需要記錄下插入時(shí)的順序時(shí),你應(yīng)該使用LinedHashSet,需要的朋友可以參考下2023-09-09關(guān)于微服務(wù)使用Dubbo設(shè)置的端口和server.port的區(qū)別
這篇文章主要介紹了關(guān)于微服務(wù)使用Dubbo設(shè)置的端口和server.port的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12在Eclipse IDE使用Gradle構(gòu)建應(yīng)用程序(圖文)
這篇文章主要介紹了在Eclipse IDE使用Gradle構(gòu)建應(yīng)用程序(圖文),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12Spring?Cloud?Alibaba負(fù)載均衡實(shí)現(xiàn)方式
這篇文章主要為大家介紹了Spring?Cloud?Alibaba負(fù)載均衡實(shí)現(xiàn)方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10