如何通过spring @Valid验证自定义默认错误消息? [英] How do I customize default error message from spring @Valid validation?

查看:729
本文介绍了如何通过spring @Valid验证自定义默认错误消息?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

DTO:

public class User {

    @NotNull
    private String name;

    @NotNull
    private String password;

    //..
}

控制器:

@RequestMapping(value = "/user", method = RequestMethod.POST)
public ResponseEntity<String> saveUser(@Valid @RequestBody User user) {
    //..
    return new ResponseEntity<>(HttpStatus.OK);
}

默认json错误:

{"timestamp":1417379464584,"status":400,"error":"Bad Request","exception":"org.springframework.web.bind.MethodArgumentNotValidException","message":"Validation failed for argument at index 0 in method: public org.springframework.http.ResponseEntity<demo.User> demo.UserController.saveUser(demo.User), with 2 error(s): [Field error in object 'user' on field 'name': rejected value [null]; codes [NotNull.user.name,NotNull.name,NotNull.java.lang.String,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [user.name,name]; arguments []; default message [name]]; default message [may not be null]],"path":"/user"}

我想为发生的每个错误使用我的自定义json.我该怎么做?

I would like to have my custom json for each error occured. How do I accomplish that?

推荐答案

您可以使用Errors/BindingResult对象执行验证. 将Errors参数添加到您的控制器方法中,并在发现错误时自定义错误消息.

You can perform validation with Errors/BindingResult object. Add Errors argument to your controller method and customize the error message when errors found.

下面是示例示例, errors.hasErrors()在验证失败时返回true.

Below is the sample example, errors.hasErrors() returns true when validation is failed.

@RequestMapping(value = "/user", method = RequestMethod.POST)
@ResponseBody
public ResponseEntity<String> saveUser(@Valid @RequestBody User user, Errors errors) {
    if (errors.hasErrors()) {
        return new ResponseEntity(new ApiErrors(errors), HttpStatus.BAD_REQUEST);
    }
    return new ResponseEntity<>(HttpStatus.OK);
}

这篇关于如何通过spring @Valid验证自定义默认错误消息?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆