В бобе поддержки:
@Min(3)
Integer foo;
Если у меня есть такая форма:
<h:form>
<h:commandButton value="Submit" />
<h:inputText value="#{bean.foo}" />
</h:form>
Это работает нормально.Однако, если я сделаю что-то вроде
<cc:interface>
<cc:attribute name="text" />
<cc:editableValueHolder name="text" targets="field" />
<cc:interface>
<cc:implementation>
<h:inputText id="field" value="#{cc.attrs.text}" />
</cc:implementation>
и вызову это внутри формы, а не напрямую h:inputText
как в:
<!-- <h:inputText value="#{bean.foo}" /> -->
<pref:fieldComponent text="#{bean.foo}" />
Но тогда я получу:
javax.validation.ValidationException: Unexpected exception during isValid call
at org.hibernate.validator.engine.ConstraintTree.validateSingleConstraint(ConstraintTree.java:144)
at org.hibernate.validator.engine.ConstraintTree.validateConstraints(ConstraintTree.java:118)
at org.hibernate.validator.metadata.MetaConstraint.validateConstraint(MetaConstraint.java:121)
at org.hibernate.validator.engine.ValidatorImpl.validateValueForGroup(ValidatorImpl.java:655)
...
И основная причина:
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Number
at org.hibernate.validator.constraints.impl.MinValidatorForNumber.isValid(MinValidatorForNumber.java:32)
at org.hibernate.validator.engine.ConstraintTree.validateSingleConstraint(ConstraintTree.java:141)
... 69 more
Если я уберу проверку, это сработает.Кроме того, если foo
имеет тип String
, он также работает с валидациями.
Я пытался играть с cc:editableValueHolder
, определяя различные типы (также опуская его) и несколько других приемов, но янемного не уверен, как на самом деле реализовать это.Или это ошибка?Похоже, это забывает использовать конвертер?Я что-то не так понял?