[英]@Valid Springboot not sending message to postman response
我正在尝试在我的 Springboot 项目上使用javax.validation并且验证不会出现在我的 postman 响应中。
@Lob
@Type(type = "org.hibernate.type.TextType")
@NotNull
@NotEmpty
@Column(name = "nome")
private String nome;
@PostMapping(value = "/templates", produces = MediaType.APPLICATION_JSON_VALUE)
@ApiModelProperty("Cria um novo template")
public ResponseEntity<TemplateDTO> cadastraTemplate(@RequestBody @Valid TemplateDTO templateDTO, UriComponentsBuilder uriComponentsBuilder) {
Template template = Template.desconvertId(templateDTO);
templateRepository.save(template);
URI uri = uriComponentsBuilder.path("template/{id}").buildAndExpand(template.getId()).toUri();
return ResponseEntity.created(uri).body(new TemplateDTO(template));
}
@Valid正在工作,但正在将消息发送到我的控制台,而不是当我在 postman 上发送他时:
控制台消息:
2022-08-24 15:44:13.285 ERROR 1668 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is javax.validation.ConstraintViolationException: Validation failed for classes [com.ages.joinfut.Model.Template] during persist time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
ConstraintViolationImpl{interpolatedMessage='não deve estar vazio', propertyPath=nome, rootBeanClass=class com.ages.joinfut.Model.Template, messageTemplate='{javax.validation.constraints.NotEmpty.message}'}
]] with root cause
{
"timestamp": "2022-08-24T18:44:13.302+00:00",
"status": 500,
"error": "Internal Server Error",
"path": "/example/templates"
}
验证有效,但为什么不响应 postman 上的正文?
当抛出异常时,Spring 必须确定如何将 Java 异常转换为 Http 响应。 这是由ResponseEntityExceptionHandler
完成的。 您的默认ResponseEntityExceptionHandler
正在捕获ConstraintViolationException
并将其转换为 500 并吃掉异常消息。 这是设置自定义异常处理程序的指南,以便您可以使用相关信息填充响应消息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.