jsf inputText и validateRegexPatter - PullRequest
5 голосов
/ 26 января 2011

Я хочу отобразить атрибут метки в сообщении:

    <h:inputText id="email" label="#{sW.email}" value="#{contattiBean.contatto.email}"
                                 required="true">
              <f:param value="#{sW.email}" />
              <f:validateRegex pattern="[\w\.-]*[a-zA-Z0-9_]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]"/>
    </h:inputText>

Я установил параметр f: потому что в

`javax.faces.validator.RegexValidator.NOT_MATCHED={0}: Valore non valido`

{0} заменяется нашаблон регулярных выражений.Пока, что отображать значение метки.Мое решение не работает, как я могу это сделать?

1 Ответ

6 голосов
/ 07 февраля 2011

Полагаю, вы используете Mojarra, потому что проверяете источник javax.faces.validator.RegexValidator. Я замечаю, что параметром сообщения проверки является только шаблон, метка никогда не передается в модуль форматирования сообщений и вы не можете использовать это в ваших собственных пользовательских сообщениях.

//From javax.faces.validator.RegexValidator source
if (!matcher.matches()) {
   Object[] params = { regex }; 
   fmsg = MessageFactory.getMessage(locale, NOT_MATCHED_MESSAGE_ID, params);
   throw new ValidatorException(fmsg);
}

В источниках MyFaces появляется, что они проходят и шаблон, и метку.

Существует как минимум две простые опции: использовать MyFaces или лучше использовать атрибут validatorMessage вашего компонента ввода.

validatorMessage description is Атрибут ValueExpression включен, который, если присутствует, будет использоваться в качестве текста сообщения валидатора, заменяя любое сообщение, полученное от валидатора .

 <h:inputText id="email" label="#{sW.email}" 
         value="#{contattiBean.contatto.email}"
         required="true" validatorMessage="#{sW.email} is not valid">
          <f:validateRegex pattern="[\w\.-]*[a-zA-Z0-9_]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]"/>
 </h:inputText>
...