Почему jsf не может вызвать метод validate, используя атрибут валидатора jsf в типе свойства Integer, вместо этого появляется другое сообщение об ошибке? - PullRequest
0 голосов
/ 31 января 2012

Я хочу проверить простое поле, которое должно содержать только цифры. Свойство value ограничено экземпляром объекта шва Home.

Код

<h:inputText id="text" value="#{personHome.intance.age}" 
    validator="#{bean.validateAge}">
   <a4j:support event="onblur" reRender="text, errorAge" />
</h:inputText>
<rich:message id="errorAge" for="text" styleClass="errors"/>

Экземпляр PersonHomeотображается правильно с помощью аннотации hibernate.

Проблема в том, что появляется другое сообщение об ошибке, и метод validateAge () не вызывается.Следовательно, я не могу переопределить сообщение должным образом и добавить свои собственные правила проверки на основе обычая.

Появляется сообщение об ошибке:

value must be an integer number between -2147483648 and 2147483647

Является ли это средством проверки гибернации?Может кто-нибудь сказать мне, что мне здесь не хватает.

Ответы [ 2 ]

2 голосов
/ 31 января 2012

Возможно, у вас есть шов

<s:validateAll> 

или

<s:validate> 

пометка вокруг вашего ввода текста (ов). Они запускают валидаторы гибернации на полях бинов. Вы можете удалить

<s:validate> 

тег, в этом случае будет вызван ваш метод проверки, или вы можете создать свой собственный валидатор гибернации (@Age), чтобы поместить его в поле вашего bean-компонента и удалить атрибут валидатора из входного текста.

UPDATE:

Существует также третий вариант: создать собственный валидатор jsf (не метод валидатора), зарегистрировать его в seam и применить его к вводимому тексту.

@BypassInterceptors
@Name("yourAgeValidator")
@org.jboss.seam.annotations.faces.Validator
public class YourAgeValidator

@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
    ....
}


<h:inputText id="text" value="#{personHome.intance.age}"  validator="yourAgeValidator">
0 голосов
/ 31 января 2012

Вы ничего не опубликовали о методе validateAge, придерживается ли он

public void validate(FacesContext context, UIComponent toValidate, Object value)

подписи.

...