Как вызвать JSF Validator на событие keyup? - PullRequest
1 голос
/ 18 января 2012

Я использую JSF 2.0 и Richfaces 4.1.0 Final

Хотя существуют некоторые подобные вопросы, такие как Ссылка
Я хочу реализовать JSF Validator в поле ввода текста при событии keyup.Может ли кто-нибудь дать указание на какое-нибудь полезное руководство, пожалуйста?

1 Ответ

4 голосов
/ 18 января 2012

Вы можете присоединить слушателей ajax к событиям DOM в любом компоненте ввода JSF HTML с помощью тега <f:ajax>.

<h:inputText id="foo" value="#{bean.foo}">
    <f:ajax event="keyup" execute="@this" render="fooMessage" />
    <f:validator validatorId="fooValidator" />
</h:inputText>
<h:message id="fooMessage" for="foo" />

fooValidator может быть простой реализацией Validator, которую вы регистрируете в контексте лиц с помощью аннотации @FacesValidator.

@FacesValidator("fooValidator")
public class FooValidator implements Validator {

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

        if (invalid) {
            throw new ValidatorException(new FacesMessage("Fail!"));
        }
    }

}

Смотри также:

В RichFaces это не сильно отличается. Есть только тег <a4j:ajax>, который на стероидах составляет всего <f:ajax>. Но на самом деле это не дает дополнительных преимуществ в этом конкретном случае. Смотрите также Есть ли разница между f: ajax и a4j: ajax?

...