休息方法:
@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
进行验证,它会检查 RestBody
和 ChildElement
。
附言Spring Boot - 2.1.6
最佳答案
尝试使用 @NotBlank
而不是 @NotNull
因为您的客户端应用程序可能正在向这些值发送非空值
特别是当您的代码和验证注释看起来不错时。
关于java - Spring Boot 中级联验证的问题(休息),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58949905/