赞
踩
注意下面的代码不会触发参数校验
- import org.springframework.http.ResponseEntity;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.RestController;
-
- import lombok.AllArgsConstructor
-
- import javax.validation.constraints.NotBlank;
- import java.util.List;
-
- @RestController
- @RequestMapping("/user")
- @AllArgsConstructor
- public class UserController {
-
- private final UserService userService;
-
- @GetMapping("/list")
- public ResponseEntity<List<User>> listUser(
- @Valid @NotBlank(message = "参数不能为空") @RequestParam String userName) {
- List<User> users = userService.listUsersByKeyName(keyName);
- return ResponseEntity.ok(users);
- }
- }
在Spring MVC中, Spring MVC的默认行为是处理HTTP请求并调用相应的Controller方法,但它不会自动为@RequestParam、@PathVariable等参数执行JSR-303/JSR-349校验,并将校验错误转换为HTTP响应。这是因为这些参数是通过HTTP请求的行(URL路径或查询字符串)传递的,而不是作为请求体的一部分,而Spring MVC的校验机制通常与请求体中的复杂对象相关联。
为了让Controller方法的基本类型参数也可以使用注解进行参数校验可以考虑如下方式:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。