Отображает ли f:validateRegex javascript?

У меня есть p: inputText (PrimeFaces) с включенным полем f: validateRegex. Я пытаюсь убедиться, что введенная информация соответствует формату. Фрагмент:

<p:inputText id="usernameInput" required="true" validatorMessage="Invalid Email" value="#{sessionHandler.username}" >
    <f:validateRegex pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$"/>
    <f:ajax event="keyUp" render="emailMessage" />
</p:inputText>
<p:watermark for="usernameInput" value="Email"/>
<h:message id="emailMessage" />

Кажется, что f:validateRegex и f:ajax не работают (при неправильном формате сообщение не появляется). Когда я смотрю на визуализированный HTML, я замечаю, что и f:validateRegex, и f:ajax отображаются именно так, а не как визуализированный компонент HTML или поле javascript. Итак, мой вопрос: должен ли f:validateRegex отображать javascript для клиентской стороны? Если да, то почему он не отображается правильно?


person chRyNaN    schedule 18.09.2014    source источник


Ответы (1)


Неа. JSF — это генератор HTML-кода. Теги <f:xxx> не являются HTML. Браузеры понимают только HTML, а не JSF.

Симптомы указывают на то, что вы забыли объявить пространство имен f: XML в родительском элементе. Например.

<html ... xmlns:f="http://xmlns.jcp.org/jsf/core">

Таким образом, вы вообще не должны видеть ничего, связанного с <f:validateRegex>. Именно полностью на стороне сервера. <f:ajax> должен переводиться в скрипт в каком-либо атрибуте события HTML DOM, например onkeyup, когда вы используете keyup (и, следовательно, не keyUp).

person BalusC    schedule 18.09.2014
comment
Я получаю предупреждение об отсутствии сообщения NLS в моем пространстве имен. Я считаю, что, возможно, использовал неправильное пространство имен. Я использовал xmlns:f="http:/java.sun.com/jsf/core" - person chRyNaN; 18.09.2014
comment
Это старое пространство имен JSF 2.0/2.1, которое, однако, должно одинаково хорошо работать в JSF 2.2. Попробуйте обновить Мохарру. В версиях 2.2.0/2.2.1/2.2.2 были некоторые ошибки в регистрации пространства имен XML. Если ошибка все еще сохраняется, просто проигнорируйте ее, запустите и проверьте в браузере, все ли работает правильно. Если это так, то, скорее всего, только ваш редактор (IDE), который, в свою очередь, нуждается в обновлении. - person BalusC; 18.09.2014