`
richand730
  • 浏览: 3445 次
社区版块
存档分类
最新评论

springboot+Validator+全局异常

 
阅读更多

新建model,为相关字段添加validator注解

@Data
public class InformationModel implements Serializable {
    private static final long serialVersionUID = InformationModel.class.getName().hashCode();
    /** ID */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    /** 文章标题 */
    @NotNull(message = "文章标题不能为空")
    @Size(min = 6, max = 11, message = "账号长度必须是6-11个字符")
    private String articleTitle;
    /** 标题图片 */
    private String headerImage;
    /** 发布时间 */
    private String releaseTime;
    /** 发布人 */
    private String user;
    /** 修改时间 */
    private String updateTime;
    /** 状态 */
    private String status;
}

 

在controller中为需要验证的参数加上@Valid注解

 

@PostMapping
    public ResultData add(@ModelAttribute @Valid InformationModel informationModel) {
        if (StrUtil.isBlank(informationModel.getHeaderImage())){
            throw new TestException(SystemTip.SYSTEM_ERROR);
        }
        int count = informationService.insert(informationModel);
        // 操作数量小于0
        if (count <= 0) {
            return ResultData.result(SystemTip.INSERT_FAIL);
        }
        return ResultData.success();
    }

 

在全局异常处理类添加BindException异常处理

@Slf4j
@ControllerAdvice
public class BasicExceptionHandler {

    @ExceptionHandler
    public void handler(Exception e, HandlerMethod handlerMethod, HttpServletResponse response){
        if (e instanceof TestException){
            ResultUtil.responseJson(response,((TestException)e).toResultData());
        }else if(e instanceof BindException){
            ResultUtil.responseJson(response,bindExceptionHandler((BindException)e));
        }else {
            log.error("{} method name: {}() handler error",handlerMethod.getBeanType(),handlerMethod.getMethod().getName(),e);
            ResultUtil.responseJson(response,new TestException(SystemTip.SYSTEM_ERROR).toResultData());
        }
    }

    public ResultData bindExceptionHandler(BindException e) {
        // 从异常对象中拿到ObjectError对象
        ObjectError objectError = e.getBindingResult().getAllErrors().get(0);
        // 然后提取错误提示信息进行返回
        return ResultData.result(SystemTip.PARAM_VALID_FAIL,objectError.getDefaultMessage());
    }
}

 

 

 

分享到:
评论

相关推荐

    基于Springboot+Mybatis+ SpringMvc+springsecrity+Redis完整网站后台管理系统

    对各种不同异常进行了全局统一处理 使用lombok简化java代码,让源码更简洁,可读性高 mybatis未进行二次封装,原滋原味,简单sql采用注解,复杂sql采用Mapper.xml配置 使用了layui的弹出层、菜单、文件上传、富...

    基于springboot+mysql的景区旅游信息管理系统.zip

    9. **异常处理**:系统应具备良好的错误处理机制,SpringBoot提供的@ControllerAdvice和@ExceptionHandler注解可以帮助我们全局处理异常,提供友好的错误提示。 10. **部署与监控**:SpringBoot应用可以被打包成...

    SpringBoot_113实用知识库分享

    本资源摘要信息涵盖了 SpringBoot 框架的各个方面,包括整合 Mybatis-Plus、全局异常处理、RESTful API 接口统一 JSON 格式返回、参数校验、Swagger Api 自动生成文档、AOP 编程、默认 json 解析器、@ModelAttribute...

    SpringBoot全局异常与数据校验的方法

    本文将详细介绍如何在SpringBoot中实现全局异常处理和数据校验。 首先,我们需要理解什么是全局异常处理。全局异常处理是指在应用程序中设置一个统一的机制,当发生异常时,能够捕获并处理这些异常,而不是让它们...

    springboot用户管理系统.rar

    自定义全局异常处理器,统一处理程序中的异常,提供友好的错误信息。使用Logback或Log4j2进行日志记录,便于问题排查和系统监控。 10. **持续集成与部署** 利用Jenkins、GitLab CI/CD或Travis CI实现自动化构建和...

    基于springboot学生成绩管理系统.zip

    SpringBoot提供了全局异常处理,可以统一处理程序中的异常并返回合适的错误信息。 10. **测试**:为了确保系统的稳定性和正确性,项目可能包含了单元测试和集成测试,例如使用JUnit和Mockito进行后端测试,使用...

    springboot竞赛报名系统后端.zip

    5. **异常处理**:系统应该具备良好的错误处理机制,使用Spring的@ControllerAdvice和@ExceptionHandler注解来统一处理全局异常,提供友好的错误信息反馈。 6. **数据验证**:为了确保输入数据的正确性,系统会利用...

    springboot-validate

    如果验证失败,会抛出`MethodArgumentNotValidException`异常,可以通过全局异常处理器捕获并返回友好的错误信息。 ```java @PostMapping("/users") public ResponseEntity createUser(@Valid User user, Binding...

    基于SpringBoot编写的RESTFul API,使用HTTP状态码与JSON作为响应规范+源代码+文档说明

    采用spring提供的@Validated注解结合hibernate的validator进行验证,你只需要在你的验证实体对象中使用验证注解,如@NotNull、@NotBlank等,同时在你的controller方法中加入@Validated注解即可,验证结果信息已经由...

    基于SpringBoot的装饰工程管理系统源码数据库.zip

    例如,权限控制可能采用RBAC(Role-Based Access Control)模型,数据验证可能利用Hibernate Validator或自定义校验规则,异常处理通常会有一个全局的异常处理器,日志记录则可以使用Log4j或Logback等工具。...

    [SpringBoot系列]验证客户端参数接口

    为了优雅地处理这些错误,可以创建一个全局异常处理器,捕获并返回合适的错误响应。例如,创建一个`@ControllerAdvice`注解的类,然后使用`@ExceptionHandler`来处理异常。 6. **全局验证消息** 通过配置资源文件...

    基于springboot的高校教师科研管理系统源码数据库.zip

    通过AOP(面向切面编程)处理全局异常,提升系统的健壮性。 综上所述,基于SpringBoot的高校教师科研管理系统整合了Java后端、Vue.js前端和MySQL数据库,构建了一个高效、易用的科研管理平台。开发者可以通过学习和...

    基于springboot美术馆预约平台微信小程序源码数据库文档.zip

    5. **异常处理**:使用Spring的@ControllerAdvice和@ExceptionHandler进行全局异常处理,提供统一的错误响应。 微信小程序部分,可能包含以下几个关键组件和技术: 1. **页面结构**:使用WXML(微信小程序标记语言...

    SpringBoot中JSR303的示例代码

    详细介绍了普通校验,分组校验,自定义注解校验等,全局异常处理,代码均为我自己编写,是我的学习笔记,并且发表了相关子蛾子,可以配合我的帖子查看,是一些简单的相关示例代码

    JSR303数据校验springboot-01-config.zip

    6. **全局异常处理**:为了统一处理校验失败时的异常,可以在Spring Boot中配置全局的异常处理器,捕获`MethodArgumentNotValidException`并返回定制的错误信息。 7. **国际化支持**:JSR303允许你通过资源文件来...

    springboot集成开发实现商场秒杀功能

    2. **全局异常处理**:通过拦截所有异常,统一处理各种异常情况,提供良好的错误反馈和用户体验。 3. **页面缓存**:利用Thymeleaf和Redis,将预渲染的HTML页面缓存起来,减少服务器动态渲染的压力,提高响应速度。 ...

    Spring中校验器(Validator)的深入讲解

    在实际应用中,通常会结合全局异常处理器(比如使用`@ControllerAdvice`注解的类),统一处理校验异常,返回格式化的错误信息,提供更好的用户体验。 总结,Spring中的`Validator`组件结合JSR-303和Hibernate ...

    Springboot 使用 JSR 303 对 Controller 控制层校验及 Service 服务层 AOP 校验 使用消息资源文件对消息国际化

    此外,为了更好地处理异常情况,可以定义一个全局异常处理器,用于捕获校验失败时抛出的异常,并提供用户友好的错误信息。例如,可以通过`@ControllerAdvice`和`@ExceptionHandler`注解来定义异常处理器: ```java ...

    springboot327基于Java的医院急诊系统.zip

    8. **异常处理**:在Java中,使用@ControllerAdvice和@ExceptionHandler注解可以全局处理异常,提供统一的错误反馈。 9. **日志记录**:使用Log4j或SLF4J进行日志记录,有助于调试和监控系统的运行状态。 10. **...

Global site tag (gtag.js) - Google Analytics