Spring 验证不适用于通用类型

Spring Validation Doesn't Work With Generic Types

在我的代码块中,我只想使用 Spring boot @Valid 批注为通用 Pair 对象验证控制器方法。但是验证对我不起作用。

我的控制器方法如下所示:

@RequestMapping(method = RequestMethod.POST, consumes = "application/json")
public void add(@RequestBody @Valid Pair<AddDto, AddUserDto> pair)
{
    ...
    service.add(pair);
}

Pair 对象看起来像:

public class Pair<F, S>
{
    private F first;
    private S second;
}

AddDto 对象看起来像:

public class AddDto
{
    @NotNull
    private String name;
    @NotEmpty
    private List<String> actionList;

    ...getters, setters
}

AddUserDto 对象看起来像:

public class AddUserDto
{
    @NotNull
    private String name;
    @NotNull
    private Long id;

    ...getters, setters
}

在这种情况下,验证对我不起作用。有什么建议吗?

与泛型无关。问题是 Pair class 没有定义任何验证规则。尝试将其更改为:

public class Pair<F, S>
{
    @Valid
    @NotNull
    private F first;
    @Valid
    @NotNull
    private S second;
}