为了账号安全,请及时绑定邮箱和手机立即绑定

关于@RequestBody默认异常信息的封装

关于@RequestBody默认异常信息的封装

慕雪6442864 2019-01-15 22:06:46
public JsonResult add(@RequestBody User user){ // 当user未传递的情况下,默认返回异常:Required request body is missing; // 如何针对这个异常信息能做一次封装,这样的话,前端那边能更直观的清楚具体错误信息; } 目前处理方式如下: public JsonResult add(@RequestBody(required = false) User user){ if(user == null){ // 把 RequestBody 设置未非必传递,再由此处判断,返回自定义的错误信息给前端; // 想寻求合适或优雅的处理方式; } }
查看完整描述

2 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

使用@ControllerAdvice做统一异常处理

查看完整回答
反对 回复 2019-02-12
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

Spring提供了一套自己的参数验证机制
验证类

public class UserValidator implements Validator {
    @Override
    public boolean supports(Class<?> aClass) {
        return aClass.equals(User.class);
    }

    @Override
    public void validate(Object o, Errors errors) {
        if (o == null) {
            errors.rejectValue("", null, "用户不能为空");
        }
    }
}

UserController

public class UserController {
    /**
     * 调用控制器前先执行这个方法 对@Valid参数进行验证
     */
    @InitBinder
    public void initBinder(WebDataBinder binder) {
        // 绑定验证器
        binder.setValidator(new UserValidator());
    }
    
    public JsonResult add(@Valid @RequestBody User user, Errors errors) {
        if (errors.hasErrors()) {
            //返回错误信息
        }
        //balabala
    }
}

再具体的用法搜索一下就是了

查看完整回答
反对 回复 2019-02-12
  • 2 回答
  • 0 关注
  • 515 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信