@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 在基本验证功能上没有太多区别。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-12-25
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调用同上。
第2个回答  2018-11-13
在对新增的用户进行ID验证,增加@Validated({addUser.class})接口类用来表示新增的User.getId()需要验证