对象Bean验证的Spring Boot列表

问题描述

我有一个豆子,

@Data
@NoArgsConstructor
public final class PersonRequest {

    @NotNull
    @JsonProperty("nameList")
    private List<Person> nameList;

   

}

和人POJO,

@Data
    public class Sensor {

    @NotNull
    @JsonProperty("id")
    private int id;

    @NotNull
    @JsonProperty("name")
    @Min(1)
    private String name;

}

我正在发送JSON请求,并在控制器中添加@Valid。我正在发送如下请求,


{
    "nameList": [
        {
            "id": 1,"name": "John"
        },{
            "id": 2,"name": "Alex"
        }
    ]
}

当我发送的请求没有经过idname验证时。我也尝试使用@Valid private List<Person> nameList;,但没有运气。我使用Spring Boot 2.3.2。

已更新:

当我再添加一个属性时,当我在请求中传递日期时,这也表示请求不正确。

    @NotNull
    @JsonProperty("startTime")
    @DateTimeFormat(pattern = "yyyy-MM-dd'T'hh:mm:ss",iso = 
                              DateTimeFormat.ISO.DATE_TIME)
    @Valid
    private LocalDateTime startTime;

解决方法

控制器中的dispatchGroup.leave()批注触发@Valid对象的验证,该对象作为请求主体传递。要同时验证PersonRequest中包含的Person对象,您还需要用PersonRequest对该字段进行注释。

@Valid