Apcoordinator ユーザーズガイド |
目次 |
第2部 Apcoordinatorコアの機能 | > 第10章 XMLデータ仕様記述 | > 10.3 XMLデータ仕様記述の実行 |
XMLデータ仕様記述で項目のチェックを行いエラーとした場合は、例外ESpecResultException
を発生させることでアプリケーションに通知します。エラーに関連する情報は、XMLデータ仕様記述上に指定し、アプリケーションで例外クラスから情報を取得します。
XMLデータ仕様記述ビジネスクラスのメソッド
<verify property="prop1" op="GE" operand="#0" error="#ERR01" info="#prop1" /> <verify property="prop2" op="GE" operand="#0" error="#ERR02" info="#prop2" /> <verify property="prop3" op="LE" operand="#10" error="#ERR03" info="#prop3,#10" />
try { validator.validate("checkValue", bean); } catch(ESpecResultException e) { ESpecResultException[] errors = new ESpecResultException[1]; Vector errVec = e.getErrorInfo(); // (1) if(errVec == null) { errors[0] = e; // (2) } else { errors = (ESpecResultException[])errVec.toArray(errors); // (3) } for(int i = 0; i < errors.length; i++) { String status = errors[i].getStatusText(); // (4) Object info = errors[i].getInfo(); // (5) ... } ... } catch(Exception e) { throw e; }
(1) 例外クラスの getErrorInfo()
メソッドは、検出したエラーのリストを持っています。データ仕様でerror
アトリビュートを利用しない場合は必ずnull
となります。例では、処理の共通化のために、ESpecResultException
の配列に変換しています。(2) getErrorInfo()
がnull
の場合はcatchしたESpecResultException
オブジェクト自体がチェック結果のエラーを示します。(3) getErrorInfo()
がnull
でない場合は、ESpecResultException
の一覧を持つjava.util.Vector
形式になっています。例ではtoArray
メソッドで配列に変換しています。(4) getStatusText()
メソッドは、error
またはexception
アトリビュートで指定した文字列を返します。この例では"ERR01"
が取得できます。(5) getInfo()
メソッドは、info
アトリビュートで記述した内容を返します。XMLデータ仕様記述の例の1行目でエラーになった場合には、文字列"prop1"
が取得できます。3行目では、文字列"prop3"
と"10"
の配列が取得できます。
リソースファイルの機能と連携することにより、エラーメッセージを編集することができます。
XMLデータ仕様記述リソースファイル記述
<verify property="prop1" op="GE" operand="#0" error="#ERR01" info="#prop1" /> <verify property="prop2" op="GE" operand="#0" error="#ERR02" info="#prop2" /> <verify property="prop3" op="LE" operand="#10" error="#ERR03" info="#prop3,#10" />
ビジネスクラスのメソッド
<?xml version="1.0" encoding="iso-2022-jp"?> <ujiResource xmlns="http://interstage.fujitsu.com/schemas/uji/ujiResource" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://interstage.fujitsu.com/schemas/uji/ujiResource http://interstage.fujitsu.com/schemas/uji/ujiresource.xsd"> <config> <version>5.1</version> </config> <text id="#ERR01">項目'{0}'は0以上に設定してください</text> <text id="#ERR02">項目'{0}'の指定が誤っています</text> <text id="#ERR03">項目'{0}'は{1}以下でなければなりません</text> </ujiResource>
try { validator.validate("checkValue", bean); } catch(ESpecResultException e) { ESpecResultException[] errors = new ESpecResultException[1]; Vector errVec = e.getErrorInfo(); if(errVec == null) { errors[0] = e; } else { errors = (ESpecResultException[])errVec.toArray(errors); } for(int i = 0; i < errors.length; i++) { String message = UjiResource.getMessage(context, errors[i]); ... } ... } catch(Exception e) { throw e; }
getMessage
UjiResource
クラスのgetMessage
メソッドで、リソースファイルの文字列とESpecResultException
からメッセージを作成します。error
またはexception
の値がリソースのid
に、info
はメッセージ編集に利用されます。この例では、"項目'prop1'は0以上に設定してください"、"項目'prop3'は10以下でなければなりません"というメッセージが生成されます。
目次 |