| @RestController |
| public class UserInfoHandler { |
| |
| |
| |
| |
| |
| |
| @GetMapping("/addUser") |
| public String addUser(UserInfo userInfo) { |
| List<String> result = ValidationUtil.valid(userInfo); |
| if (result.size() > 0) { |
| System.out.println(result); |
| return "校验不成功"; |
| }else { |
| return "添加成功"; |
| } |
| } |
| |
| } |
| @RestController |
| public class UserInfoHandler { |
| |
| |
| |
| |
| |
| @GetMapping("/addUser2") |
| public String addUser2(@Valid UserInfo userInfo, BindingResult bindingResult) { |
| if (bindingResult.hasErrors()) { |
| List<ObjectError> allErrors = bindingResult.getAllErrors(); |
| for (ObjectError error : allErrors) { |
| System.out.println(error.getObjectName() +"::" + error.getDefaultMessage()); |
| } |
| |
| List<FieldError> fieldErrors = bindingResult.getFieldErrors(); |
| for (FieldError fieldError : fieldErrors) { |
| System.out.println(fieldError.getField() + ":" +fieldError.getDefaultMessage() |
| +",当前没通过校验规则的值是:"+fieldError.getRejectedValue()); |
| } |
| return "校验不通过"; |
| } |
| return "添加成功"; |
| } |
| |
| } |
| @RestController |
| public class UserInfoHandler { |
| |
| |
| |
| |
| |
| |
| |
| @GetMapping("/addUser3") |
| public String addUser3(@Validated(value = {UserInfo.Add.class, Default.class}) |
| UserInfo userInfo, BindingResult bindingResult) { |
| if (bindingResult.hasErrors()) { |
| List<ObjectError> allErrors = bindingResult.getAllErrors(); |
| for (ObjectError error : allErrors) { |
| System.out.println(error.getObjectName() +"::" + error.getDefaultMessage()); |
| } |
| |
| List<FieldError> fieldErrors = bindingResult.getFieldErrors(); |
| for (FieldError fieldError : fieldErrors) { |
| System.out.println(fieldError.getField() + ":" +fieldError.getDefaultMessage() |
| +",当前没通过校验规则的值是:"+fieldError.getRejectedValue()); |
| } |
| return "校验不通过"; |
| } |
| return "添加成功"; |
| } |
| |
| } |
| @ControllerAdvice |
| public class RoadJavaControllerAdvice { |
| |
| @ExceptionHandler(BindException.class) |
| @ResponseBody |
| public String handleEx(BindException e) { |
| List<FieldError> fieldErrors = e.getFieldErrors(); |
| StringBuilder sb = new StringBuilder("这是RoadJavaControllerAdvice,"); |
| for (FieldError fe: fieldErrors) { |
| sb.append("属性:").append(fe.getField()) |
| .append("校验不通过,原因:").append(fe.getDefaultMessage()) |
| .append(";"); |
| } |
| return sb.toString(); |
| } |
| } |
| |
| @RestController |
| public class UserInfoHandler { |
| @GetMapping("/addUser4") |
| public String addUser4(@Validated(value = {UserInfo.Add.class, Default.class}) |
| UserInfo userInfo) { |
| return "addUser4添加成功"; |
| } |
| } |
| @ControllerAdvice |
| public class RoadJavaControllerAdvice { |
| |
| |
| @ExceptionHandler(BindException.class) |
| @ResponseBody |
| public String handleEx(BindException e) { |
| List<FieldError> fieldErrors = e.getFieldErrors(); |
| StringBuilder sb = new StringBuilder("这是RoadJavaControllerAdvice,"); |
| for (FieldError fe: fieldErrors) { |
| sb.append("属性:").append(fe.getField()) |
| .append("校验不通过,原因:").append(fe.getDefaultMessage()) |
| .append(";"); |
| } |
| return sb.toString(); |
| } |
| |
| |
| @ExceptionHandler(ConstraintViolationException.class) |
| @ResponseBody |
| public List<String> handleEx(ConstraintViolationException e) { |
| Set<ConstraintViolation<?>> set = e.getConstraintViolations(); |
| List<String> list = set.stream().map(v -> "属性:" + v.getPropertyPath() + |
| ",属性的值:" |
| + v.getInvalidValue() + ",校验不通过的提示信息:" + v.getMessage() |
| +",消息模板:"+v.getMessageTemplate()) |
| .collect(Collectors.toList()); |
| return list; |
| } |
| |
| |
| @ExceptionHandler(Exception.class) |
| @ResponseBody |
| public String handleEx(Exception e) { |
| return e.getMessage(); |
| } |
| |
| } |
| |
| @RestController |
| @Validated |
| public class UserInfoHandler { |
| @GetMapping("/getByName") |
| public String getByName(@NotNull String name) { |
| return name+"ok"; |
| } |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下