2015-04-22 2 views
5

Я использую аннотацию Spring @Valid для проверки полей bean, которые аннотируются аннотациями javax.constraints.исключить некоторые поля из проверки @Valid

Но я столкнулся с проблемой, когда мне нужно исключить некоторые поля из проверки (только для некоторых случаев).

Я провел расследование не нашел полезных путей, и большинство ответов было датировано 2010-2011 годами. Это довольно неожиданно, так как эта ситуация настолько распространена.

Есть ли какие-либо изменения с того времени для весны 4. +? Или, может быть, кто-то может поделиться личным опытом, как победить это?

Спасибо.

ответ

5

Вы можете использовать группу валидации и аннотацию @Validated.

Там очень подробно объясняется в http://www.javacodegeeks.com/2014/08/validation-groups-in-spring-mvc.html

Подход основан на hibernate validator's groups и позволяет группировать проверку на основе интерфейса маркера и применить его на уровне обработчика, например, как указано в ссылке

@RequestMapping(value = "stepTwo", method = RequestMethod.POST) 
public String stepTwo(@Validated(Account.ValidationStepTwo.class) Account account, Errors errors) { 
    if (errors.hasErrors()) { 
     return VIEW_STEP_TWO; 
    } 
    return "redirect:summary"; 
} 
+0

Точно, что мне нужно. Примечание для всех: имя '@ Validated' может вводить в заблуждение, поскольку, как я думал на первый взгляд, я должен передать ему группы, которые нужно пропустить, но на самом деле обратное. Кроме того, в качестве заполнителя для проверки только группы по умолчанию вы можете использовать для лучшей читаемости: '@Validated (javax.validation.groups.Default.class)', который равен '@ Validated' без параметров. – user2138356

+0

[Существует также ответ] (http://forum.spring.io/forum/spring-projects/web/117289-validated-s-given-groups-should-consider-default-group-or-not) как не для дублирования 'Default.class' для каждого поля. Но, к сожалению, он подходит только для добавления поля к проверке по умолчанию, но не исключает его. – GKislin

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