проверка перекрестного поля для составных компонентов - PullRequest
0 голосов
/ 22 марта 2011

Как реализовать проверку по полям для составных компонентов? Составной компонент, который я использую, представляет собой текстовое поле ввода (одно для электронной почты и второе для подтверждения электронной почты). Я применил тег f: validator для компонента verifyEmail. Как получить значение для составного компонента электронной почты в методе validate. Это UIComponent или UINamingContainer?

Ответы [ 2 ]

0 голосов
/ 25 марта 2011

Я реализовал метод проверки, как описано выше.Я думаю, что проблема с моим кодом заключается в том, где использовать тег f: validate в составном компоненте.

<eg:inputText id="confirmEmail" value="backingbean.email"/>

<eg:inputText id="email" value="backingbean.email">
<f:validator validatorId="core.jsf.CompareValidator" for="inputText"/>
</eg:inputText>

Но когда я отправляю форму, валидатор не вызывается.Должен ли я обернуть валидатор вокруг компонента или это правильный способ реализации.

0 голосов
/ 24 марта 2011

Технически, ваш композит - это UINamingcontainer, но любой компонент может найти его потомков.

Я подозреваю, что что-то вроде следующего должно работать

public void validate(FacesContext context, UIComponent component, Object value) {
    UIInput first = (UIInput)component.findComponent("compositesFirstInputID");
    UIInput second = (UIInput)component.findComponent("compositessecondInputID");

    Object firstEntry = first.getSubmittedValue();
    Object secondEntry = second.getSubmittedValue();
    if(!firstEntry.equals(secondEntry))
        throw new ValidatorException(...);
}

Может потребоваться добавить проверку нуля, возможно, trim () и использовать equlasIgnoreCase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...