我正在春天创建一个网络服务。我有一个 Params DTO,它嵌套在我的 OtherParentDTO 中。每个请求可能只包含 params Dto 中的某些字段。如果字段存在,那么我需要进行验证(基本上是空检查)。在自定义验证器中,我将指定需要针对特定请求验证哪些字段。我的问题是在控制器中,错误字段作为参数返回。有没有办法将其更改为 params.customerId 或 parmas.userId。
更新客户需求:
{"params":{"customerId" : "b2cab997-df13-4cb0-8f67-4357b019bb96"}, "客户":{}}
更新用户要求:
{"params":{"userId" : "b2cab997-df13-4cb0-8f67-4357b019bb96"}, "用户":{}}
@JsonSerialize(include = Inclusion.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class Params {
private String customerId;
private String userId;
//setter and getter are there
}
public class UpdateCustomerRequestDTO {
@NotNull
@IsValid(params = {"customerId"})
protected Params params;
@NotNull @Valid
private Customer customer;
}
public class UpdateUserRequestDTO {
@NotNull
@IsValid(params = {"userId"})
protected Params params;
@NotNull @Valid
private User user;
}
Run Code Online (Sandbox Code Playgroud)
自定义约束验证器
@Constraint(validatedBy = …Run Code Online (Sandbox Code Playgroud)