2011-01-26 7 views
5

iは、メッセージのラベル属性を表示するPARAMをJSFのinputTextおよびvalidateRegexPatter

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

に{0}で置換されているので正規表現パターン。 ラベル値を表示するにはどうすればいいですか? 私のソリューションは動作しません。どうすればいいですか?

答えて

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> 
関連する問題