2012-04-24 2 views
0

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

  1. Bean Validation
  2. JSF Validation

Я хочу, чтобы написать свой собственный класс проверки. Можно ли добавить собственный класс проверки в JSF-компоненты?

Я не хочу иметь класс проверки в моем лице. Только в Bean ...

ответ

2

Да, вы можете написать свой собственный класс валидатора как это:

@FacesValidator("customValidator") 
public class CustomValidator implements Validator{ 

    public void validate(FacesContext context, UIComponent component, 
      Object value) throws ValidatorException { 
     // do your validation here 
    } 
} 

и использовать его в Facelets:

<h:inputText value="#{myBean.myValue}"> 
    <f:validator validatorId="customValidator" /> 
</h:inputText> 

Обратите внимание, что содержание @FacesValidator аннотации должно совпадать с validatorId атрибут f:validator.

Кроме того, элементы ввода jsf имеют атрибут validator. Вы можете использовать этот атрибут для делегирования проверки специальному методу в том, что вы поддерживаете bean-компонент.

с

public void validateInput(FacesContext context, 
          UIComponent component, Object object) { 
    // your validation with 'object' here 
} 
1

Вы можете сделать это,

Пожалуйста, посмотрите на здесь. http://www.javabeat.net/examples/2008/07/09/write-your-own-validator-in-jsf/

+0

Это не то, что я хочу. Он добавляет проверку на страницу jsf. – Kayser

+0

Это, вам нужно реализовать интерфейс Validator, чтобы создать собственный валидатор. Что вы хотите точно? –

+0

В Bean вы можете проверить значение с помощью аннотаций. Что-то похожее. Я хочу написать валидатор, который проверяет входное значение в Bean. И я не хочу, чтобы в facelet – Kayser