Top / Struts / 1.1での例外処理

Struts1.1の新機能として、Actionクラスで発生した例外を汎用的に処理する機能があります。これはstruts-config.xmlに例外の種類、遷移先のパス、ApplicationResource?.propertiesのキー、を宣言しておけば、Actionクラスで例外がThrowされたときに、勝手に画面遷移やメッセージ表示をしてくれるという便利なものです。これを使うことによって

  • 設定ファイルを利用して、ソースコードを減らして(ひいてはコードを簡潔に)、コード間の関連を疎にする
  • めんどくさい例外処理を手抜きできる*1

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

struts-config.xmlの記述

ここでは超手抜きして、java.lang.Exceptionに対する例外処理を書いてみましょう(もちろん本当はちゃんとサブクラスについて書きましょう。Exceptionだけでひとつの処理としてしまうと、例外機構の意味がないですからね)。

<global-exceptions>
  <exception type="java.lang.Exception" key="errors.unknown"
              path="kino.tiles.passwordsearch"/>
</global-exceptions>

こんだけです。これでActionクラスで例外がThrowされたときはpathで指定した画面に遷移します。

エラー画面の記述

エラー画面の遷移先では

<html:errors/>

を書いておきます。

ApplicationResource?.propertiesの記述

ApplicationResource?.properties で

errors.unknown= 検索で何らかのエラーが発生しました。<br />{0}

としておけば、java.lang.ExceptionがThrowされたときに画面に

検索で何らかのエラーが発生しました。<br />「例外メッセージ」

が表示されます*2

感想

これも

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

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


この記事は

選択肢 投票
おもしろかった 9  
そうでもない 9  

Top / Struts / 1.1での例外処理

現在のアクセス:12151


*1 ビジネスロジックの例外は手を抜いちゃダメだよ
*2 {0}はe.getMessage()かな?

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-01-31 (火) 14:20:18 (4694d)