2017-02-17 47 views
0

在我目前的项目中,我经常使用批量请求。我有简单的BulkRequest<T>类:如何在REST服务中验证泛型bean?

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,但是我也需要验证嵌套请求。

我该怎么办?

回答

3

将@Valid添加到请求中。像这样

@NotNull 
@Valid 
private List<T> requests; 

然后嵌套对象也验证