当前位置:   article > 正文

关于spring-boot-starter-validation校验基本类型校验注意事项

关于spring-boot-starter-validation校验基本类型校验注意事项

注意下面的代码不会触发参数校验

  1. import org.springframework.http.ResponseEntity;
  2. import org.springframework.web.bind.annotation.GetMapping;
  3. import org.springframework.web.bind.annotation.RequestParam;
  4. import org.springframework.web.bind.annotation.RestController;
  5. import lombok.AllArgsConstructor
  6. import javax.validation.constraints.NotBlank;
  7. import java.util.List;
  8. @RestController
  9. @RequestMapping("/user")
  10. @AllArgsConstructor
  11. public class UserController {
  12. private final UserService userService;
  13. @GetMapping("/list")
  14. public ResponseEntity<List<User>> listUser(
  15. @Valid @NotBlank(message = "参数不能为空") @RequestParam String userName) {
  16. List<User> users = userService.listUsersByKeyName(keyName);
  17. return ResponseEntity.ok(users);
  18. }
  19. }

        

Spring MVC中, Spring MVC的默认行为是处理HTTP请求并调用相应的Controller方法,但它不会自动为@RequestParam、@PathVariable等参数执行JSR-303/JSR-349校验,并将校验错误转换为HTTP响应。这是因为这些参数是通过HTTP请求的行(URL路径或查询字符串)传递的,而不是作为请求体的一部分,而Spring MVC的校验机制通常与请求体中的复杂对象相关联。

为了让Controller方法的基本类型参数也可以使用注解进行参数校验可以考虑如下方式:

  1. 最简单的方式直接在Controller类使用@Validated,这样Controller所有的方法参数一旦增加参数校验注解都会触发校验。
  2. 使用对象作为方法参数。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/938133
推荐阅读
相关标签
  

闽ICP备14008679号