springmvc的@Validated注解使用

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

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

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

注意:@ValidatedBindingResult 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组的属性



  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: @GetMapping注解是Spring MVC中的一个注解,用于将HTTP GET请求映射到指定的处理方法上。 使用@GetMapping注解可以非常方便地定义RESTful风格的API接口。当客户端发送GET请求时,Spring MVC框架会根据请求的URL路径和HTTP参数自动匹配到对应的处理方法,并将处理方法的返回值转换成HTTP响应返回给客户端。 例如,使用@GetMapping注解可以定义一个处理GET请求的方法如下: ``` @GetMapping("/users") public List<User> getUsers() { // 从数据库或其他数据源中获取用户列表 List<User> userList = userService.getUserList(); return userList; } ``` 在上面的代码中,@GetMapping注解标注的是处理GET请求的方法,它的路径为"/users",表示当客户端发送GET请求访问"/users"时,会调用getUsers()方法并返回一个用户列表。 ### 回答2: @GetMapping注解是Spring MVC框架中的一个注解,它的作用是将HTTP的GET请求映射到特定的处理方法上。 当我们在控制器类的处理方法上加上@GetMapping注解时,表示该方法可以处理HTTP的GET请求。在请求到达控制器后,Spring MVC将根据请求的路径和GET请求的方法进行匹配,找到对应的处理方法,并执行该方法。 @GetMapping注解可以接受一个字符串参数,用于指定请求路径的映射规则。比如@GetMapping("/user")表示处理路径为“/user”的GET请求。这样,当我们通过浏览器访问“http://localhost:8080/user”时,Spring MVC将会调用被注解的处理方法。 使用@GetMapping注解可以使代码更加简洁,提供更加清晰的路径映射。相比于传统的配置方式,使用注解可以减少配置的工作量,并且更加直观。通过注解的方式,我们可以在控制器类中集中定义所有的请求路径和处理方法,使代码更加可读性和可维护性。 总结来说,@GetMapping注解的作用是将HTTP的GET请求映射到特定的处理方法上,使我们能够通过简洁的代码实现路径的映射和请求的处理。它是Spring MVC框架中重要的注解之一,可以提高开发效率和代码的可读性。 ### 回答3: @GetMapping注解是Spring MVC框架提供的一种HTTP请求映射注解,用于将指定的URL请求与处理方法进行映射关联。其作用主要有以下几个方面: 1. 定义HTTP的GET请求:使用@GetMapping注解可以将一个方法映射到指定的URL上,并指定该方法处理的是HTTP的GET请求。这样当客户端发送GET请求时,Spring MVC会自动将请求与对应的处理方法进行匹配。 2. 精确匹配URL路径:@GetMapping注解中可以通过value或path属性指定URL的具体路径。这样可以进行精确匹配,只有当客户端请求的URL路径与注解中指定的路径完全一致时,才能触发对应的处理方法。 3. 支持多路径映射:@GetMapping注解中可以同时指定多个URL路径,使用数组的形式进行定义。这样可以将多个不同路径的请求映射到同一个处理方法上。 4. 支持RESTful风格的URL路径:@GetMapping注解还支持在URL路径中使用占位符,以支持RESTful风格的URL设计。通过在URL路径中定义占位符,可以将请求中的参数值传递给处理方法进行处理。 总的来说,@GetMapping注解的作用是用来定义处理HTTP的GET请求,并将请求的URL路径与处理方法进行映射关联。通过该注解,我们可以方便的定义并处理多种不同URL路径的GET请求,提高开发效率和代码可读性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值