首页 > 学院 > 开发设计 > 正文

springmvc的@Validated注解使用

2019-11-08 02:26:23
字体:
来源:转载
供稿:网友

1. 校验的错误信息, 可以直接在bean属性上配置, 也可以在PRoperties中配置。 

2. 将校验器bean配置到注解驱动上

3. 在需要校验的pojo前边添加@Validated,在需要校验的pojo后边添加BindingResult bindingResult接收校验出错信息

注意:@Validated和BindingResult bindingResult是配对出现,并且形参顺序是固定的(一前一后)。

使用validated所需配置:

1. jar包

2. application.xml

 <!-- validated 校验配置start -->    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" >    	<!-- 提供检验机制的类: 此处用的而是Hibernate校验器,但是跟Hibernate没有关系 -->    	<property name="providerClass" value="org.hibernate.validator.HibernateValidator" />    	<!-- 指定校验的使用的资源文件, 如果不需要额外的错误配置文件,就不用配置该属性,    	 在配置文件中配置k-v的错误提示信息,如果不指定则使用默认配置:classpath下的ValidationMessages.properties -->    	<property name="validationMessageSource" ref="messoreSources" />    </bean>    <!-- 额外错误信息文件配置 -->    <bean id="messoreSources" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"><!--     	错误信息资源文件, 不需要写后缀, 默认后缀为.properties -->    	<property name="basenames">    		<list>    			<value>classpath:testErrMessages</value>    		</list>    	</property><!--     	错误信息文件编码方式 -->    	<property name="fileEncodings" value="utf-8" /><!--     	错误信息文件缓存时间 -->    	<property name="cacheSeconds" value="120" />    </bean>    <!-- validated 校验配置end  -->            <!-- 注解驱动,替换处理器映射器、处理器适配器 -->    <mvc:annotation-driven validator="validator" />

3. testErrMessage.properties文件

文件结构:

文件内容:

4. bean的配置, 省略get/set方法

public class ValidBean {	//直接配置错误信息	@NotBlank(message="用户名不能为空", groups= {UserGroup1.class})	private String name;		@Max(value=120, message="年龄最大为120")	private Integer age;		// 使用配置文件中的错误信息, properties中的key: message="{key}"。 {}:占位符	@NotBlank(message="{validator.user.address}")	private String address;}5. controller

@Controller@RequestMapping("/test/")public class ValidTestController {	/**	 * 	 * @desc: 校验没有分组的属性	 * @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: 仅对属于userGroup组的属性进行校验	 * @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;	}}测试结果:

只校验没有分组的属性

校验UserGroup1组的属性


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表