JSF 2.0 + проверка бинов + больше групп проверки в одной форме - PullRequest
0 голосов
/ 23 августа 2011

Я пытаюсь создать форму для редактирования объекта сущности при выборе из таблицы данных. Поэтому, когда пользователь щелкает commandButton в datatable, свойство myBean.person заполняется соответствующим объектом person. Человек имеет свойство "статус".

Я хотел бы проверить форму редактирования с различными группами проверки в соответствии со значением свойства "status". Возможно ли это?

Я создал две разные группы проверки:

 @Entity
    public class Person{
        private String status;
        ...
        @NotNull(message = "{person.null.name}", groups = PersonNew.class)
        private String name;
        @NotNull(message = "{person.null.code}", groups = PersonActive.class)
        private String code;
    }

Я бы хотел проверить форму перед сохранением, а когда статус «новый», тогда необходимо установить свойство name. Когда статус «активен», тогда должно быть установлено свойство code.

У меня есть страница jsf:

<h:form id="personEdit">
    <h:inputText value="#{myBean.person.name}" />
    <h:inputText value="#{myBean.person.code}" />
    ... other fields for other properties ...
    <h:commandButton value="Save" action="#{myBean.save}" />
</h:form>

Я пытался использовать тег <f:validateBean /> с динамически установленным атрибутом validationGroups, но метод, который возвратил validationGroups, был вызван до того, как был получен реальный объект person. Так что я не мог решить в соответствии с Person.status свойство.

Так можно ли определить PersonNew как группу проверки, если человек имеет статус "новый", в противном случае определить PersonActive как группу проверки?

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 05 октября 2011

Если вы используете Hibernate Validator, то похоже, что @GroupSequenceProvider удовлетворит ваши потребности:

Аннотация @GroupSequence - это стандартизированная аннотация Bean Validation [...], которая позволяет вам статически переопределитьпоследовательность групп по умолчанию для класса.Hibernate Validator также предлагает пользовательскую нестандартную аннотацию - org.hibernate.validator.group.GroupSequenceProvider - которая позволяет динамически переопределять последовательность групп по умолчанию.

См. официальное руководство .

...