java - “对象='用户'的验证失败。错误计数:1”而不是“电子邮件不能为空”
问题描述
我有一个验证和创建用户的 api。当我不在请求正文中输入电子邮件时,我会收到
{
"timestamp": "2020-11-26T13:55:40.116+00:00",
"status": 400,
"error": "Bad Request",
"message": "Validation failed for object='user'. Error count: 1",
"path": "/api/users"
}
我想将消息更改为更不稳定的错误,例如“电子邮件不能为空”。这就是我模型的属性的样子:
@NotNull
private String email;
这是我的控制器的方法:
@PostMapping("/users")
public ResponseEntity<User> addUser(@RequestBody @Valid User user) {
User savedUser = manager.save(user);
URI uri = ServletUriComponentsBuilder.fromCurrentRequest()
.path("/{id}")
.buildAndExpand(savedUser.getId())
.toUri();
return ResponseEntity.ok(savedUser);
}
我试图在@NotNull
注释中设置自定义消息,但消息没有改变。此外,当错误被抛出时,控制台会显示此消息:
2020-11-26 15:09:11.460 WARN 7137 --- [nio-8080-exec-2] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public org.springframework.http.ResponseEntity<pl.vemu.socialApp.entities.User> pl.vemu.socialApp.controllers.UserController.addUser(pl.vemu.socialApp.entities.User) throws pl.vemu.socialApp.exceptions.user.UserWithEmailAlreadyExistException: [Field error in object 'user' on field 'email': rejected value [xsars.pl]; codes [Email.user.email,Email.email,Email.java.lang.String,Email]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [user.email,email]; arguments []; default message [email],[Ljavax.validation.constraints.Pattern$Flag;@2a50b33,.*]; default message [must be a well-formed email address]] ]
如何在响应json中设置消息?
如何在控制台中摆脱此消息?其他错误不会在控制台中显示消息。
解决方案
问题是 Spring 默认情况下在绑定时不会发送错误。要启用它,您必须添加server.error.include-binding-errors=always
您的 application.properties。
推荐阅读
- html - 图像不会并排显示
- javascript - Axios:如何访问被拒绝的承诺的响应对象?
- python - pygame 使精灵向上和向下移动
- node.js - 在将有效负载发送到客户端之前从 requestjs 转换有效负载
- ios - 反应本机iOS构建问题在提供的路径中找不到应用程序包
- c# - 在没有 Parallel.For() 的情况下在 c# 中的 for 循环中实现多线程
- python - 如何在 abaqus python 脚本中引用 findAt 列表/元组
- c# - 打印列表对象 c#
- bash - bash - 下划线后的第一个字符大写
- html - 对齐同一行上的两个按钮有效,但不是 div