5

メッセージに label 属性を表示したい:

    <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:param を設定しました。

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

{0} は正規表現パターンに置き換えられます。一方、ラベル値を表示するもの。私のソリューションが機能しません。どうすればよいですか?

4

1 に答える 1

6

javax.faces.validator.RegexValidator のソースをチェックしているため、Mojarra を使用していると思います。検証メッセージのパラメーターはパターンのみであり、ラベルはメッセージ フォーマッタに渡されず、独自のカスタム メッセージ。

//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 ソースでは、パターンとラベルの両方を渡すようです。

少なくとも 2 つの簡単なオプションがあります。MyFaces を使用するか、入力コンポーネントの validatorMessage 属性を使用することをお勧めします。

validatorMessage の説明は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>
于 2011-02-07T08:39:57.550 に答える