2017-02-17 17 views
0

В моем текущем проекте я часто использую массовые запросы. У меня есть простой BulkRequest<T> класс:Как проверить общий компонент в службе REST?

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; } 
} 

Это очень простой в использовании с другими компонентами, например:

@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; 

Затем вложенные объекты также проверяются