#topicpath
----
//ここにコンテンツを記述します。
Struts1.1の新機能として、Actionクラスで発生した例外を汎用的に処理する機能があります。これはstruts-config.xmlに例外の種類、遷移先のパス、ApplicationResource.propertiesのキー、を宣言しておけば、Actionクラスで例外がThrowされたときに、勝手に画面遷移やメッセージ表示をしてくれるという便利なものです。これを使うことによって
-設定ファイルを利用して、ソースコードを減らして(ひいてはコードを簡潔に)、コード間の関連を疎にする
-めんどくさい例外処理を手抜きできる((ビジネスロジックの例外は手を抜いちゃダメだよ))

などのメリットがありそうです。


#contents
***struts-config.xmlの記述 [#u491b38f]
ここでは超手抜きして、java.lang.Exceptionに対する例外処理を書いてみましょう(もちろん本当はちゃんとサブクラスについて書きましょう。Exceptionだけでひとつの処理としてしまうと、例外機構の意味がないですからね)。
 <global-exceptions>
   <exception type="java.lang.Exception" key="errors.unknown"
               path="kino.tiles.passwordsearch"/>
 </global-exceptions>
こんだけです。これでActionクラスで例外がThrowされたときはpathで指定した画面に遷移します。

***エラー画面の記述 [#l76cc61f]
エラー画面の遷移先では
 <html:errors/>
を書いておきます。

***ApplicationResource.propertiesの記述 [#xd2e73e4]
ApplicationResource.properties で
 errors.unknown= 検索で何らかのエラーが発生しました。<br />{0}
としておけば、java.lang.ExceptionがThrowされたときに画面に
 検索で何らかのエラーが発生しました。<br />「例外メッセージ」
が表示されます(({0}はe.getMessage()かな?))。

***感想 [#k08ac05a]
これも
-<html:errors/> のプロパティを指定できない
-Actionごとに遷移先を切り替えられない(とりあえず自画面にエラー表示したい、など)

という仕様なのでしょうか?やっぱその場合はActionで例外を処理するんでしょうかね。
あくまで、ロジックによる例外ではなく想定外の例外(?)の時の制御をさせると考えた方がよいんですかね。



----
この記事は
#vote(おもしろかった[3],そうでもない[2])
#vote(おもしろかった[4],そうでもない[3])
- fdsf -- [[fdd]] &new{2008-02-07 (木) 11:49:09};

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS