【问题标题】:Problem with cascade validation in Spring Boot (rest)Spring Boot(rest)中的级联验证问题
【发布时间】:2019-11-20 08:35:03
【问题描述】:

休息法:

@NewSpan("NewSpan")
@RequestMapping(method = RequestMethod.POST)
public ResponceEntity someRest(@Valid @RequestBody RestBody) {}

休息身体结构:

@Data
@Entity
@Table(name = "some_table")
public class RestBody implements Serializable {

   @Id
   @NotNull(message = "Errr txt")
   String id;
   @Enumerated(EnumType.STRING)
   SomeStatus status;
   @NotNull(message = "Errr txt")
   @Valid
   @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
   List<ChildElement> childElements;
}


@Data
@Entity
@Table(name = "some_table")
public class ChildElement implements Serializable {

   @NotNull(message = "Errr txt")
   String name;
   @NotNull(message = "Errr txt")
   @Convert(converter = JsonNodeConverter.class)
   @Column(name = "content_schema", columnDefinition = "TEXT")
   JsonNode extContent;
}

Spring 验证 RestBody 中的字段,但忽略 ChildElement 中的字段。 (例如“name”为空时的示例)。

如何配置 Spring 或类来验证子元素?

附:如果我尝试手动使用ValidatorImpl 验证它,它会检查RestBodyChildElement
附言Spring Boot - 2.1.6

【问题讨论】:

  • 空名或null名是不同的情况。
  • 是否包含 spring-boot-starter-validation 依赖项
  • @M.Deinum 我的意思是 null(修复有问题的信息)。
  • @Simon Martinelli 不,我没有。我稍后会尝试。
  • @RiĥardBrugekĥaim 检查 NotNull 的导入。应该是 javax.validation.constraints.NotNull

标签: java spring spring-boot


【解决方案1】:

尝试使用@NotBlank 而不是@NotNull,因为您的客户端应用程序可能正在向这些值发送非空值 尤其是当您的代码和验证注释看起来不错时。

【讨论】:

  • 我在 unitests 中找到它,并在 debug 中检查 RestBody。
【解决方案2】:

你必须包括

spring-boot-starter-validation

作为运行此程序的依赖项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 2022-11-03
    • 2021-03-02
    • 2016-12-01
    • 1970-01-01
    相关资源
    最近更新 更多