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を返して終了だけど…コミットされていた場合に何をやっているのかはよくわからない。