关于spring-boot-starter-validation校验基本范例校验注意事项 ...

打印 上一主题 下一主题

主题 582|帖子 582|积分 1746

注意下面的代码不会触发参数校验
  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方法的基本范例参数也可以使用注解举行参数校验可以思量如下方式:

  • 最简单的方式直接在Controller类使用@Validated,这样Controller所有的方法参数一旦增长参数校验注解都会触发校验。
  • 使用对象作为方法参数。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

北冰洋以北

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表