为什么 Spring ResDocs FieldDescriptor 不收集内部对象的约束?
Why do Spring ResDocs FieldDescriptor don't gather constraint on inner objects?
目前我正在努力处理似乎无法“看到”所有验证约束的 FieldDescriptor。以下场景:
我有一个 Dto 类似于:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ExampleDto {
@NotNull
@Valid
private GeoCoordinates coordinate;
@Min(value = 0)
@Max(value = 100)
private BigDecimal workingProperty = BigDecimal.valueOf(0);
//...
还有一个 class 这样的地理坐标:
@Getter
@NoArgsConstructor
public class GeoCoordinates {
@NotNull
@Max(value = 180)
private Double latitude;
//...
在 FieldDescriptor 上正确找到了对“workingProperty”的约束:
相反的情况发生在坐标的 FieldDescriptor 上:
按照文档 https://docs.spring.io/spring-restdocs/docs/current/reference/html5/#documenting-your-api-constraints-finding 我没有看到为什么在一个字段上找到约束而在另一个字段上找不到约束的问题。特别是当验证器正确验证所有内容时。
经过一些研究,我在自定义 ValidatorConstraintResolver 中找到了问题的原因。它只是调查顶级约束,我不得不通过使用反射进行更深入的研究。
目前我正在努力处理似乎无法“看到”所有验证约束的 FieldDescriptor。以下场景:
我有一个 Dto 类似于:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ExampleDto {
@NotNull
@Valid
private GeoCoordinates coordinate;
@Min(value = 0)
@Max(value = 100)
private BigDecimal workingProperty = BigDecimal.valueOf(0);
//...
还有一个 class 这样的地理坐标:
@Getter
@NoArgsConstructor
public class GeoCoordinates {
@NotNull
@Max(value = 180)
private Double latitude;
//...
在 FieldDescriptor 上正确找到了对“workingProperty”的约束:
相反的情况发生在坐标的 FieldDescriptor 上:
按照文档 https://docs.spring.io/spring-restdocs/docs/current/reference/html5/#documenting-your-api-constraints-finding 我没有看到为什么在一个字段上找到约束而在另一个字段上找不到约束的问题。特别是当验证器正确验证所有内容时。
经过一些研究,我在自定义 ValidatorConstraintResolver 中找到了问题的原因。它只是调查顶级约束,我不得不通过使用反射进行更深入的研究。