2014-11-18 2 views
0

Iv'e видел это хороший механизм:Spring MVC @ Valid аннотация для всех контроллеров?

http://www.mkyong.com/spring-mvc/spring-3-mvc-and-jsr303-valid-example/

Можно ли сделать @Valid аннотации avaialble для всех контроллеров с проверкой? Это кажется очень избыточными сделать следующее:

@RequestMapping(value = "/getPlayerAccounts", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) 
@ResponseStatus(value = HttpStatus.OK) 
@ResponseBody 
public QueryResultsDTO<PlayerAccountResultDTO> getPlayerAccounts(@RequestBody **@Valid** FilteredQueryRequestDTO filteredQueryRequestDTO, 
           **BindingResult result**) { 

**this.validateDTO(result);** 
return this.playerService.getPlayerAccounts(filteredQueryRequestDTO); 
} 

Reduandant код:

@Valid

BindingResult результат

this.validateDTO (результат);

Это похоже на повторяющийся узор, возможно, кто-то уже решил его? возможно, с аспектами? Я не забочусь, что все мои методы и контроллеры будут иметь @Valid логина, большинство DTOS они ПРИУЮ будут действительно в любом случае (поскольку никаких аннотаций проверки не применяется к ним)

Благодаря

+2

Вы уверены, что можете сделать это с учетом аспектов. Но я не уверен, что это действительно стоит хлопот. –

+1

Итак, вы считаете, что проверка в каждом контроллере является лучшим решением? Размышление о разработчике, который забывает добавить примечание @Valid, заставляет меня чувствовать головокружение – Urbanleg

+0

Ну, вот что такое модульные тесты для ... –

ответ

2

вы не можете пропустить @ Действительная аннотация, так как это способ рассказать весне, которая должна проверяться, так это то, как работает весенняя валидация. Но наличие результата BindingResult для каждого из ваших методов не требуется. Вы можете полностью его опустить. Если вы хотите что-то сделать, когда проверка не удалась, вы можете поймать MethodArgumentNotValidException, который вызывается в этом случае из метода обработки исключений (например, вы можете использовать класс с аннотациями @ControllerAdvice, которые будут содержать @ExceptionHandler методы, применяемые ко всем контроллерам. Обработка исключений - это целая другая тема, вы можете прочитать более подробную информацию о связанных spring mvc exception handling documentation)

+0

Не знаю, изменились ли с 14-го числа, но я мог бы исключить @Valid и принудительно выполнить проверку. Это можно сделать так: https://stackoverflow.com/questions/44722000/how-to-spring-get-rid-of-validate-for-automatic-controller-validation –

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