2016-02-29 4 views
5

В моем контроллере у меня есть метод для создания сущностиSpring Controller Rest: как выборочно отключить проверку

import javax.validation.Valid; 
... 
@RestController 
public class Controller { 

    @RequestMapping(method = RequestMethod.POST) 
    public ResponseEntity<?> create(@Valid @RequestBody RequestDTO requestDTO) { 
    ... 

с

import org.hibernate.validator.constraints.NotEmpty; 
... 
public class RequestDTO 
    @NotEmpty // (1) 
    private String field1; 
    //other fields, getters and setters. 

Я хочу, чтобы добавить метод контроллера

update(@Valid @RequestBody RequestDTO requestDTO) 

, но в этом методе должно быть допустимо, чтобы field1 был пустым или нулевым, т.е. строка

@NotEmpty // (1) 

RequestDTO следует игнорировать.

Как я могу это сделать? Должен ли я писать класс, который выглядит точно так же, как RequestDTO, но не содержит аннотации? Или это как-то возможно через наследование?

ответ

8

Короткий ответ: Используйте Validation группы:

@NotEmpty(groups = SomeCriteria.class) 
private String field1; 

И ссылаться на вашу предназначенную группу параметров обработчика метода:

public ResponseEntity<?> create(@Validated(SomeCriteria.class) @RequestBody RequestDTO requestDTO) 

В приведенном выше примере, будет применяться валидация в SomeCriteria группе и другие будут проигнорированы. Как правило, эти группы проверок определяются как пустые интерфейсы:

public interface SomeCriteria {} 

Вы можете прочитать больше об этих ограничениях группы в Hibernate Validator documentation.

Смежные вопросы