簡體   English   中英

@Valid Springboot 未向 postman 響應發送消息

[英]@Valid Springboot not sending message to postman response

我正在嘗試在我的 Springboot 項目上使用javax.validation並且驗證不會出現在我的 postman 響應中。

  • 我的 Model:
@Lob
@Type(type = "org.hibernate.type.TextType")
@NotNull
@NotEmpty
@Column(name = "nome")
private String nome;
  • 我在 POST 申請中的 Controller:
@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
  • 在我的 Postman 響應中:
{
    "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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM