2016-05-17 13 views
0

私の電子メール入力フィールドには2つのバリデータがあり、最初のものはf:validateRegexを使用し、2番目のものはf:バリデータを使用します。 validateRegexが失敗したときに表示されるデフォルトのメッセージ( '値は無効')、バリデータが失敗したときに バリデータメッセージが表示されます( '電子メールはすでに使用中です')。 validatorMessageでf:validateRegexメッセージをカスタマイズするまでは問題ありません。 入力フィールドに、予期せぬ両方の新しいメッセージ(「電子メールが無効です」)が表示されるようになりました。validatorMessage他のメッセージをオーバーライド

だから私はどのようにf:validatorメッセージを保持できますか?

HTML:

<p:inputText id="phoneNo" value="#{bean.phoneNo}" 
validatorMessage="#{msg['errors.phone.invalid']}"> 
    <f:validateRegex pattern="#{msg['pattern.regex.phone']}" /> 
    <f:validator binding="#{phoneNoValidator}" /> 
</p:inputText> 
<p:message for="phoneNo" showDetail="true" /> 

Validatorクラス:

public void validate(FacesContext context, UIComponent component, 
    Object value) throws ValidatorException { 
    fc = context; 
    String phoneNo = String.valueOf(value); 
    if (driverBO.isExistMobileNo(phoneNo)) { 
     FacesMessage message = getErrorMessage(Errors.PHONE_DUPLICATED); 
     throw new ValidatorException(message); 
    } 
} 

答えて

-1

すでに "validatorMessageは、他のメッセージを上書きする" に気づいたよう。

f:validateRegexもメッセージのカスタマイズにはあまり便利ではありません。

  1. リムーブ属性:validatorMessage
  2. 削除タグ:F:豆にfollowin注釈を追加することでカスタマイズが容易と国際化のためにあるビーンの検証にvalidateRegex
  3. 移動:

サンプルコード:

@Pattern(regexp = "[A-Za-z\\. ]+", message = "{pattern.regex.phoneMessage}") 
private String phoneNo; 

メッセージは次の場所で定義する必要があります。ValidationMessages.properties for d efaultロケール、および 'xx'ロケールのValidationMessages_xx.propertiesにあります。

articleを参照してください。

関連する問題