org.apache.struts.action.ExceptionHandler
まずActionForwardを作成する。ExceptionConfigにpathが設定されていればそれで、設定されていなければActionMappingのinput属性を使用する。
次に例外をリクエストに登録するとともに、例外のメッセージをExceptionConfigのscope属性に応じたスコープに登録する(new ActionMessages()してるから他のメッセージは消滅)。このとき例外がModuleExceptionのサブクラスであった場合は少しおもしろい動きをする。
- 通常の例外
ActionMessageのkey:ExceptionConfigのkey属性
ActionMessageのvalue:exception.getMessage()
ActionMessagesのkey:ExceptionConfigのkey属性
- ModuleExceptionのサブクラス
ActionMessage:ModuleExceptionの属性から取得
ActionMessagesのkey:ModuleExceptionのproperty属性
あとはレスポンスがコミットされていなければActionForwardを返して終了だけど…コミットされていた場合に何をやっているのかはよくわからない。