Hibernate-валидатор Группы с Spring MVC

Я использую hibernate-validator 4.3.1 и Spring MVC 3.2.3.

У моего приложения есть бин со следующими свойствами и аннотациями (для простоты я удалил большинство из них):

public class Account {
  @NotEmpty(groups = GroupOne.class)
  private String name;

  @NotEmpty(groups = GroupOne.class)
  private Date creationDate;

  @NotEmpty(groups = GroupTwo.class)
  private String role;

  @NotEmpty(groups = GroupTwo.class)
  private String profile;

  //getters and setters
}

Как показано, существует две группы проверок, потому что приложение имеет форму мастера, состоящую из двух этапов: на первом этапе поля name и creationDate заполняются пользователем, а на втором - поля роли и профиля.

Я добавляю некоторые методы контроллера в качестве примера:

@RequestMapping(value = "/account/stepOne", method = "POST")
public String stepOne(@ModelAttribute @Validated(GroupOne.class) Account account, BindingResult bindingResult) {
  //Implementation
}

@RequestMapping(value = "/account/stepTwo", method = "POST")
public String stepTwo(@ModelAttribute @Validated(GroupTwo.class) Account account, BindingResult bindingResult) {
  //Implementation
}

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

До сих пор все работало нормально, но у меня есть некоторые проблемы, когда я хочу использовать этот компонент в другой форме. Эта форма отображает все поля компонента, и метод контроллера, который получает отправку, выглядит следующим образом:

@RequestMapping(value = "/account/stepOne", method = "POST")
public String stepOne(@ModelAttribute @Validated Account account, BindingResult bindingResult) {
  //Implementation
}

Как вы можете видеть, имя группы было удалено из аннотации @Validated, потому что я хочу применить все проверки, определенные в компоненте Account.

Однако это не сработало, и единственный способ заставить его работать - добавить группу Default в свойства bean-компонента, как показано ниже:

public class Account {
  @NotEmpty(groups = {GroupOne.class, Default.class})
  private String name;

  @NotEmpty(groups = {GroupOne.class, Default.class})
  private Date creationDate;

  @NotEmpty(groups = {GroupTwo.class, Default.class})
  private String role;

  @NotEmpty(groups = {GroupTwo.class, Default.class})
  private String profile;

  //getters and setters
}

Есть ли более элегантный способ добиться этого?

Ответы на вопрос(3)

Ваш ответ на вопрос