エラー・メッセージのカスタマイズ

システムで生成されるビジネス・コンポーネントのエラー・メッセージは、アプリケーション開発者を対象としています。この情報は、エンド・ユーザーにとっては役に立たず、混乱を招くこともしばしばあります。次の2つの方法で、エンド・ユーザー用にエラー・メッセージをカスタマイズできます。

エラー・メッセージの処理に一方の方法しか使用できない場合もあります。たとえば、ユーザーが無効な値をフォームに入力した場合は、エラーを捕捉して、メッセージを表示し、ユーザーが訂正してから操作を継続できるようにする必要があります。また、ユーザーにはエラーを解除できない場合(たとえばデータベースが停止した場合)は、通常は、ユーザーに次の操作を通知するカスタム・エラー・メッセージを使用して例外を示します。

次に、これらの2つの方法について説明します。

try-catchブロックを使用した例外のトラップ

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つの方法はメッセージ・バンドルです。メッセージ・バンドルは、エラー番号とユーザーが指定する置換テキストの配列です。メッセージ・バンドルをプロジェクトに追加すると、バンドルで指定するエラー・メッセージがデフォルトのシステム生成エラー・メッセージをオーバーライドします。

プロジェクトでカスタム・メッセージ・バンドルを使用するには、ビジネス・コンポーネント・プロジェクト・エディタでカスタム・バンドルのリストにそのバンドルを追加します。メッセージ・バンドルはコード・エディタで編集します。

メッセージ・バンドルを作成するには、次のようにします。

  1. システム・ナビゲータで、.jpxノードをダブルクリックし、ビジネス・コンポーネント・プロジェクト・エディタを開きます。
  2. 「オプション」タブをクリックします。
  3. 「新規」をクリックし、新規メッセージ・バンドルを作成します。
  4. 「新規MessageBundleクラス」ダイアログ・ボックスで名前を入力するかデフォルトを受け入れます。
  5. 「OK」をクリックします。
    プロジェクトに新規のメッセージ・バンドルが追加されていることに注意してください。
  6. 「OK」をクリックし、エディタを閉じます。

ビジネス・コンポーネントのエラー・メッセージはすべて、JBO-25222などの、JBO-という接頭辞が付いた5桁の数字になっています。この例外のエラー・メッセージをオーバーライドするには、リソース・バンドルに、25222および置換するテキストを指定する必要があります(メッセージ・バンドルにはJBO-接頭辞は指定しません)。

メッセージ・バンドル・クラスを編集するには、次のようにします。

  1. システム・ナビゲータで、メッセージ・バンドル・クラスをダブルクリックし、コード・エディタを開きます。
  2. コメント/*fill in 2-D array here*/が表示されている場所に、番号とメッセージのペアのリストを入力します。次の形式を使用してください。
    
      {"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をオーバーライドするには、次のようにします。

  1. CSMessageBundle.javaを開き、25026を検索します。
  2. JBO-25026の横に、一意の文字列EXC_READ_ROW_XMLがあります。同じファイルでこの文字列を検索します。
  3. この文字列が検出された場所に、例外で表示されるメッセージがあります。EXC_READ_ROW_XMLの場合、"Row:{1} with XML tag:{0} failed."です。
  4. これで、JBO-25026をオーバーライドするときは、XMLタグと障害が発生した行の情報をこの順に渡す必要があることがわかります。


関連項目

Business Components for Javaエラー・メッセージ
ビジネス・コンポーネント・アプリケーションにおけるエラー処理方法