システムで生成されるビジネス・コンポーネントのエラー・メッセージは、アプリケーション開発者を対象としています。この情報は、エンド・ユーザーにとっては役に立たず、混乱を招くこともしばしばあります。次の2つの方法で、エンド・ユーザー用にエラー・メッセージをカスタマイズできます。
エラー・メッセージの処理に一方の方法しか使用できない場合もあります。たとえば、ユーザーが無効な値をフォームに入力した場合は、エラーを捕捉して、メッセージを表示し、ユーザーが訂正してから操作を継続できるようにする必要があります。また、ユーザーにはエラーを解除できない場合(たとえばデータベースが停止した場合)は、通常は、ユーザーに次の操作を通知するカスタム・エラー・メッセージを使用して例外を示します。
次に、これらの2つの方法について説明します。
try-catchブロックを使用する場合、例外が表示される前にトラップします。これで、独自のテキストを含む新たな例外をスローできます。ユーザーの入力が0から10までの値かどうかを確認するためにtry-catchブロックを使用する例を次に示します。カスタム・メッセージは"You must enter a number between 0 and 10"です。
public void setOrderStatus(Number value) {
try
{
setAttributeInternal(ORDERSTATUS, value);
}
catch (oracle.jbo.AttrSetValException e)
{
throw new oracle.jbo.JboException
("You must enter a number between 0 and 10.");
}
}
カスタム・エラー・メッセージを実装するもう1つの方法はメッセージ・バンドルです。メッセージ・バンドルは、エラー番号とユーザーが指定する置換テキストの配列です。メッセージ・バンドルをプロジェクトに追加すると、バンドルで指定するエラー・メッセージがデフォルトのシステム生成エラー・メッセージをオーバーライドします。
プロジェクトでカスタム・メッセージ・バンドルを使用するには、ビジネス・コンポーネント・プロジェクト・エディタでカスタム・バンドルのリストにそのバンドルを追加します。メッセージ・バンドルはJavaソース・エディタで編集します。
メッセージ・バンドルを作成するには、次のようにします。
ビジネス・コンポーネントのエラー・メッセージはすべて、JBO-25222などの、JBO-という接頭辞が付いた5桁の数字になっています。この例外のエラー・メッセージをオーバーライドするには、リソース・バンドルに、25222および置換するテキストを指定する必要があります(メッセージ・バンドルにはJBO-接頭辞は指定しません)。
メッセージ・バンドル・クラスを編集するには、次のようにします。
{"25002", "Could not start the application. Call x9876 for assistance."},
{"26061", "Application cannot connect to database. Call x4357 for assistance."},
{"27122", "Application error, log a support ticket or call x9876 for assistance."}
一部のエラー・メッセージでは、問題の箇所を詳しく説明するためにパラメータが使用されます。たとえば、エラー・メッセージが"View object, OrdersView, is read only"の場合、OrdersViewはエラー・メッセージに渡されたビュー・オブジェクトの名前です。
パラメータを使用するには、<jdev install>/bc4j/src/bc4j-messages.zipに含まれるCSMessageBundle.javaでメッセージ文字列を確認する必要があります。CSMessageBundle.javaファイルは、エラー番号と対応する文字列のリストです。この文字列によって、コンストラクタに渡されるオブジェクト配列でのパラメータの位置が指定されます。
たとえば、JBO-25026の最初のEXC_READ_ROW_XMLをオーバーライドするには、次のようにします。
Copyright © 1997, 2007, Oracle. All rights reserved.