在我目前的项目中,我经常使用批量请求。我有简单的BulkRequest<T>
类:
import java.util.List;
import javax.validation.constraints.NotNull;
public class BulkRequest<T> {
@NotNull private List<T> requests;
public List<T> getRequests() { return this.requests; }
public void setRequests(List<T> requests) { this.requests = requests; }
}
与其他bean一起使用非常简单,例如:
@RequestMapping(value = "/departments/{departmentId}/patterns",
method = RequestMethod.POST,
produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Object> post(
final @PathVariable long departmentId,
final @Valid @RequestBody BulkRequest<AddPatternRequest> bulkRequest
) {
...
}
AddPatternRequest
包含自己的验证规则,只代表一个请求,可以收集批量请求:
import javax.validation.constraints.NotNull;
public class AddPatternRequest {
@NotNull private Long pattern;
public Long getPattern() { return this.pattern; }
public void setPattern(Long pattern) { this.pattern = pattern; }
}
但是有一个问题。在控制器收到批量请求后,它仅验证BulkRequest
并检查requests
集合是否为null
,但我也需要验证嵌套请求。
我该怎么做?
答案 0 :(得分:4)
将@Valid添加到请求中。喜欢这个
@NotNull
@Valid
private List<T> requests;
然后验证嵌套对象