有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Spring Boot(rest)中级联验证的java问题

休息方法:

@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
P.P.S.弹簧靴-2.1.6


共 (2) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    你必须包括

    spring-boot-starter-validation
    

    作为依赖项来运行此操作