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
手动验证它,它会检查RestBody
和ChildElement
P.P.S.弹簧靴-2.1.6
# 1 楼答案
尝试使用
@NotBlank
而不是@NotNull
,因为可能您的客户端应用程序正在发送非空值的值 尤其是当你的代码和验证注释看起来不错的时候# 2 楼答案
你必须包括
作为依赖项来运行此操作