【Struts】*.do設定で、struts-config.xmlに設定していないアドレスにアクセスがあった場合、エラーページへ飛ばす。

web.xmlに


のように*.doを設定していると、
javax.servlet.ServletException: アクション /hogeAction に対応するマッピングが見つかりません
というエラーが出ることがあります。

これはstruts-config.xml に "/hogeAction" というパスを持つアクションが存在しないために発生するエラーです。

これを、対応するアクションが存在しない場合にはエラーページへ飛ばすように設定したい。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=10418&forum=12&3
上記URLを参考にRequestProcessorを継承して実装してみました。

まず、存在しないアクションを指定した場合にデフォルトで移動するパスを保持するにdefaultPathというプロパティを追加する為、ControllerConfig を継承したクラスを作ります。


RequestProcessor#init(ActionServlet,ModuleConfig)をオーバーライドして、初期化コードを実装します。
また、指定されたアクションが
存在しない場合、エラーを表示している部分はprocessMappingのようでうすので、これを拡張し、指定されたアクションが無ければ、プロパティで指定したアクションへ移動するようにコードを追加します。今回はTilesを使用したいのでTilesRequestProcessorを拡張します。

struts-config.xmlの設定は次のようにしました。


でもぉ、こんなことをしなくても unknown="true"にすれば万事解決。
以上

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です