@validated注解怎么用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@validated注解怎么用相关的知识,希望对你有一定的参考价值。
现在基本上都是前后端分离项目, 后端返回json数据给前端, 前端传参一般是也是传json。
后台controller用@RequestBody修饰, 如示例,如果不使用@Validated那么service就得判断账号密码是否为空,在很多场景下,前端会传大量参数过来,这个时候就可以节省效率了。
情形1:
前端什么都不传,在请求为到达controller前HttpRequestMethodNotSupportedException。
情形2:
假设前端传参为空json, service中的login方法未对相关参数做校验就直接使用,就会发生NPE。这个时候就可以是用@Validated。
自定义增删改查注解,在vo对象上使用jsr-303约束。
groups参数上使用自定义的增删改查注解,在controller形参上使用@Validated(Select.class)。而后MethodArgumentNotValidException。
SpringBoot参数验证
Spring Validation 验证框架对参数的验证机制提供了@Validated (Spring's JSR-303 规范,是标准 JSR-303 的一个变种),javax 提供了@Valid(标准 JSR-303 规范)。
配合 BindingResult 可以直接提供参数验证结果。其中对于字段的特定验证注解,比如 @NotNull。两者在检验 Controller 的入参是否符合规范时,使用@Validated 或者 @Valid 在基本验证功能上没有太多区别。
参考技术A springmvc实现jsp界面回显的三种方式总结:第一种:controller处理方法的形参pojo定义的对象与此类型同名 ,首字母小写,此时spring能自动将该对象名为key,此对象作为value,保存到request中。(必须注意:方法形参必须定义HttpServletRequest对象)形如:controller中的方法:public ModelAndView insertItemsXXXX( HttpServletRequest request, Modelmodel, @Validated ItemsCustom itemsCustom, BindingResult bindingResult)throws Exception jsp的处理:<input type="text" name="name" value="$itemsCustom.name">第二种:通过注解 @ModelAttribute来定义request中保存的key的名字,如下:controller:public ModelAndView insertItemsXXXXX( HttpServletRequest request, Model model, @ModelAttribute(value="items") @Validated ItemsCustom itemsCustom, BindingResult bindingResult)throws Exceptionjsp:<input type="text" name="name" value="$items.name">第三种(最直观):通过model方式在request中存储指定key与value,如下:controller:@RequestMapping("/insertItemsXXXXX")public String insertItemsXXXXX( HttpServletRequest request, Model model, @Validated ItemsCustom itemsCustom, BindingResult bindingResult)throws Exception if(bindingResult.hasErrors()) model.addAttribute("allErrors", bindingResult.getAllErrors()); model.addAttribute("items", itemsCustom); return ....; ....... return ....; jsp调用同上。 参考技术B 在对新增的用户进行ID验证,增加@Validated(addUser.class)接口类用来表示新增的User.getId()需要验证以上是关于@validated注解怎么用的主要内容,如果未能解决你的问题,请参考以下文章
用spring的@Validated注解和org.hibernate.validator.constraints.*的一些注解在后台完成数据校验