この章の内容は次のとおりです。
ADF Facesでは、検証または変換が失敗したときに表示されるメッセージのデフォルト・テキストが用意されています。連動して、できるだけエラー・メッセージが表示されないようにするとともに、ユーザーが有効な値を入力できるようにします。
FacesMessage
クラスでは、サマリー・メッセージと詳細メッセージの両方がサポートされます。規則は次のとおりです。
サマリー・メッセージはメイン・キーに対して定義されます。キー値の形式は、classname
.
MSG_KEY
です。
詳細メッセージの形式は、classname
.
MSG_KEY
_detail
です。
簡単に言うと、詳細メッセージをオーバーライドするには、適切なクラスのセッター・メソッドを使用するか、必要なメッセージ・キーを使用してリソース・バンドルに置き換えるメッセージを入力します。
メッセージ文字列をインスタンスごとに変更するかわりに、メッセージ文字列をグローバルにオーバーライドすることもできます。カスタム文字列がすべてのインスタンスで使用可能になるよう、メッセージ・バンドルを使用します。コンバータおよびバリデータのデフォルトのエラー・メッセージをグローバルにオーバーライドする方法の詳細は、「コンポーネントの全インスタンスのバリデータおよびコンバータのカスタム・メッセージの定義方法」を参照してください。
ユーザーが入力した値やメッセージ用のコンポーネントのラベルなどの関連する詳細の指定に、詳細メッセージではプレースホルダが使用されます。プレースホルダ識別子の一般的な順序は次のとおりです。
コンポーネント・ラベル
入力値(存在する場合)
最小値(存在する場合)
最大値(存在する場合)
パターン(存在する場合)
また、メッセージ・バンドルを使用して、アプリケーション・レベルでメッセージ文字列をグローバルに設定することも可能です。「コンポーネントの全インスタンスのバリデータおよびコンバータのカスタム・メッセージの定義方法」を参照してください。
ADF Facesで、デフォルトのメッセージを独自のメッセージで置き換えるには、バリデータまたはコンバータのxxxMessageDetail属性のテキストを設定するか、EL式を使用してこれらの属性をリソース・バンドルにバインドします。メッセージ内のプレースホルダを使用して、関連する詳細を含めることもできます。
ADF Facesの各コンバータおよびバリデータについて、次の情報が提供されます。
メッセージのオーバーライドに使用できるsetメソッド。
リソース・バンドルで独自のメッセージの識別に使用できるメッセージ・キー。
入力値やパターンなどの詳細を含むプレースホルダのメッセージでの使用方法。
ADF Facesには多くのコンバータとバリデータが用意されており、アプリケーションでADF Faces入力コンポーネントに変換および検証機能を追加することができます。
次のサブセクションでは、すべてのADF Facesコンバータおよびバリデータの詳細メッセージのリファレンスの詳細を説明します。
色の値を表す文字列とjava.awt.Color
オブジェクトとの間の変換を行います。変換に使用されるパターンのセットはオーバーライドできます。
色の変換: 入力値はパターン・セットに基づく色に変換できません
setメソッド:
setMessageDetailConvert(java.lang.String convertBothMessageDetail)
メッセージ・キー:
org.apache.myfaces.trinidad.convert.ColorConverter.CONVERT_detail
プレースホルダ:
パターンとスタイル・セットに基づき、文字列とjava.util.Date
との間の変換を行います。
日時の変換: type
がboth
に設定されている場合、日付オブジェクトに変換できない日時の値
setメソッド:
setMessageDetailConvertBoth(java.lang.String convertBothMessageDetail)
メッセージ・キー:
org.apache.myfaces.trinidad.convert.DateTimeConverter.CONVERT_BOTH_detail
プレースホルダ:
日にちの変換: パターンやセカンダリ・パターンが設定されている場合、またはtype
がdate
に設定されている場合は、入力値を日にちに変換できません
setメソッド:
setMessageDetailConvertDate(java.lang.String convertDateMessageDetail)
メッセージ・キー:
org.apache.myfaces.trinidad.convert.DateTimeConverter.CONVERT_DATE_detail
プレースホルダ:
日にちの変換: パターンやセカンダリ・パターンが設定されている場合、またはtype
がtime
に設定されている場合は、入力値を日にちに変換できません
setメソッド:
setMessageDetailConvertTime(java.lang.String convertTimeMessageDetail)
メッセージ・キー:
org.apache.myfaces.trinidad.convert.DateTimeConverter.CONVERT_TIME_detail
プレースホルダ:
javax.faces.convert.NumberConverter
標準JSFクラスの拡張が提供されます。コンバータでは、デフォルトNumberConverter
のすべての標準機能が提供され、オブジェクトへの変換は厳密です。
数値の変換: パターン・セットに基づき、入力値はNumberに変換できません
setメソッド:
setMessageDetailConvertPattern(java.lang.String convertPatternMessageDetail)
メッセージ・キー:
org.apache.myfaces.trinidad.convert.NumberConverter.CONVERT_PATTERN_detail
プレースホルダ:
数値の変換: type
がnumber
に設定されている場合、およびpattern
がnullか設定されていない場合は、入力値を数値に変換できません
setメソッド:
setMessageDetailConvertNumber(java.lang.String convertNumberMessageDetail)
メッセージ・キー:
org.apache.myfaces.trinidad.convert.NumberConverter.CONVERT_NUMBER_detail
プレースホルダ:
数値の変換: type
がcurrency
に設定されている場合、およびpattern
がnullか設定されていない場合は、入力値を数値に変換できません
setメソッド:
setMessageDetailConvertCurrency(java.lang.String convertCurrencyMessageDetail)
メッセージ・キー:
org.apache.myfaces.trinidad.convert.NumberConverter.CONVERT_CURRENCY_detail
プレースホルダ:
数値の変換: type
がpercent
に設定されている場合、およびpattern
がnullか設定されていない場合は、入力値を数値に変換できません
setメソッド:
setMessageDetailConvertPercent(java.lang.String convertPercentMessageDetail)
メッセージ・キー:
org.apache.myfaces.trinidad.convert.NumberConverter.CONVERT_PERCENT_detail
プレースホルダ:
エンコード時に文字列のバイト数が検証されます。
バイト長の検証: 入力値が最大バイト長を超えています
setメソッド:
setMessageDetailMaximum(java.lang.String maximumMessageDetail)
メッセージ・キー:
org.apache.myfaces.trinidad.validator.ByteLengthValidator.MAXIMUM_detail
プレースホルダ:
特定の制限に対して日付が有効かどうかが検証されます。
日付制限の検証 - 無効な日付: invalidDate
がinvalidDays
のリスト内にある場合、入力値は無効です
setメソッド:
setMessageDetailInvalidDays(java.lang.String invalidDays)
メッセージ・キー:
org.apache.myfaces.trinidad.validator.DateRestrictionValidator.WEEKDAY_detail
プレースホルダ:
日付制限の検証 - 無効な曜日: 値がinvalidDaysOfWeek
に指定される曜日のいずれかである場合、入力値は無効です
setメソッド:
setMessageDetailInvalidDaysOfWeek(java.lang.String invalidDaysOfWeek)
メッセージ・キー:
org.apache.myfaces.trinidad.validator.DateRestrictionValidator.DAY_detail
プレースホルダ:
日付制限の検証 - 無効な月: 値にinvalidMonths
に指定された月がある場合、入力値は無効です
setメソッド:
setMessageDetailInvalidMonths(java.lang.String invalidMonths)
メッセージ・キー:
org.apache.myfaces.trinidad.validator.DateRestrictionValidator.MONTH_detail
プレースホルダ:
入力された日付が、指定された範囲内かどうかが検証されます。
日付時間範囲の検証: 入力値が、設定されたmaximum
値を超えています
setメソッド:
setMessageDetailMaximum(java.lang.String maximumMessageDetail)
メッセージ・キー:
org.apache.myfaces.trinidad.validator.DateTimeRangeValidator.MAXIMUM_detail
プレースホルダ:
日付時間範囲の検証: 入力値が、設定されたminimum
値を下回っています
setメソッド:
setMessageDetailMinimum(java.lang.String minimumMessageDetail)
メッセージ・キー:
org.apache.myfaces.trinidad.validator.DateTimeRangeValidator.MINIMUM_detail
プレースホルダ:
日付時間範囲の検証: minimum
およびmaximum
が設定されていますが、入力値がその範囲を超えています
setメソッド:
setMessageDetailNotInRange(java.lang.String notInRangeMessageDetail)
メッセージ・キー:
org.apache.myfaces.trinidad.validator.DateTimeRangeValidator.NOT_IN_RANGE_detail
プレースホルダ:
入力された値が、指定された範囲内かどうかが検証されます。
Double範囲の検証: 入力値が、設定されたmaximum
値を超えています
setメソッド:
setMessageDetailMaximum(java.lang.String maximumMessageDetail)
メッセージ・キー:
org.apache.myfaces.trinidad.validator.DoubleRangeValidator.MAXIMUM_detail
プレースホルダ:
Double範囲の検証: 入力値が、設定されたminimum
値を下回っています
setメソッド:
setMessageDetailMinimum(java.lang.String minimumMessageDetail)
メッセージ・キー:
org.apache.myfaces.trinidad.validator.DoubleRangeValidator.MINIMUM_detail
プレースホルダ:
Double範囲の検証: minimum
およびmaximum
が設定されていますが、入力値がその範囲を超えています
setメソッド:
setMessageDetailNotInRange(java.lang.String notInRangeMessageDetail)
メッセージ・キー:
org.apache.myfaces.trinidad.validator.DoubleRangeValidator.NOT_IN_RANGE_detail
プレースホルダ:
入力された値が、指定された範囲内かどうかが検証されます。
長さの検証: 入力値が、設定されたmaximum
値を超えています
setメソッド:
setMessageDetailMaximum(java.lang.String maximumMessageDetail)
メッセージ・キー:
org.apache.myfaces.trinidad.validator.LengthValidator.MAXIMUM_detail
プレースホルダ:
長さの検証: 入力値が、設定されたminimum
値を下回っています
setメソッド:
setMessageDetailMinimum(java.lang.String minimumMessageDetail)
メッセージ・キー:
org.apache.myfaces.trinidad.validator.LengthValidator.MINIMUM_detail
プレースホルダ:
長さの検証: minimum
およびmaximum
が設定されていますが、入力値がその範囲を超えています
setメソッド:
setMessageDetailNotInRange(java.lang.String notInRangeMessageDetail)
メッセージ・キー:
org.apache.myfaces.trinidad.validator.LengthValidator.NOT_IN_RANGE_detail
プレースホルダ: