注意下面的代码不会触发参数校验
- 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方法的基本范例参数也可以使用注解举行参数校验可以思量如下方式:
- 最简单的方式直接在Controller类使用@Validated,这样Controller所有的方法参数一旦增长参数校验注解都会触发校验。
- 使用对象作为方法参数。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |