Проверка поля в JSF 1 невозможна. Так что вы должны сделать это вручную.
В вашем случае это можно сделать либо с помощью @PrePersist
и @PreUpdate
, либо вы можете сделать это вручную в методе действий.
Один совет для вас. Избегайте использования компонентов Entity в качестве компонентов шва. Лучше сделать отдельный компонент шва.
Причины этого:
Бины сущностей могут быть связаны с переменной контекста и функционировать как компонент шва. Поскольку сущности имеют постоянную идентичность в дополнение к их контекстуальной идентичности, экземпляры сущностей обычно явно связаны в коде Java, а не неявно создаются экземплярами в Seam.
Компоненты сущностного компонента не поддерживают биекцию или разграничение контекста. Вызов объекта EJB также не запускает проверку.
Объектные компоненты обычно не используются в качестве прослушивателей действий JSF, но часто функционируют в качестве вспомогательных компонентов, предоставляющих свойства компонентам JSF для отображения или отправки формы. В частности, часто используют объект в качестве вспомогательного компонента вместе с прослушивателем действия сессионного компонента без сохранения состояния для реализации функциональности создания / обновления / удаления типа.
По умолчанию бины сущностей привязаны к контексту диалога. Возможно, они никогда не будут связаны с контекстом без гражданства.
Обратите внимание, что в кластеризованной среде несколько менее эффективно связывать объектный компонент напрямую с контекстной переменной Seam в области диалога или сеанса, чем для хранения ссылки на объектный компонент в компоненте сеанса с сохранением состояния. По этой причине не все приложения Seam определяют компоненты управления данными как компоненты Seam.
@Entity
public class MetaAbastecimento {
.....
//If check fails you can throw exception, thus rollback will occur, and commit will not be made
@PrePersist
@PreUpdate
public void check() {
if(abastecimentoMinimo == 0f || abastecimentoMaximo == 0f && abastecimentoMinimo > abastecimentoMaximo)
throw new RuntimeException("Failed!");
}
}