JSF 2.0 + проверка бинов + больше групп проверки в одной форме
Я пытаюсь создать форму для редактирования объекта сущности при выборе из DataTable. Поэтому, когда пользователь нажимает commandButton в datatable, myBean.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.status
имущество.
Так можно ли определить PersonNew
в качестве группы проверки, если лицо имеет статус "новый", в противном случае определите PersonActive
как группа проверки?
Спасибо за любую помощь.
1 ответ
Если вы используете Hibernate Validator, чем выглядит @GroupSequenceProvider
должен удовлетворить ваши потребности:
Аннотация @GroupSequence - это стандартизированная аннотация Bean Validation [...], которая позволяет статически переопределять последовательность групп по умолчанию для класса. Hibernate Validator также предлагает пользовательскую нестандартную аннотацию - org.hibernate.validator.group.GroupSequenceProvider - которая позволяет динамически переопределять последовательность групп по умолчанию.
Смотрите официальное руководство.