この日記は私的なものであり所属会社の見解とは無関係です。 GitHub: takahashikzn

struts2-convention-plugin状況下にてJSPへフォワードする

struts2-convention-pluginを使っているときに、
特定の例外が発生したらJSPへフォワードしようと思って、

    <global-results>
      <result name="db-error" type="redirect">/errors/db-error.jsp</result>
    </global-results>

    <global-exception-mappings>
      <exception-mapping exception="foo.bar.DatabaseException" result="db-error"/>
    </global-exception-mappings>


と書いたのですが、なぜか404エラーになります。
どうやらstruts2-convention-pluginはJSPの直接実行を許さないみたいです。


そこで、次のように書いてみたら動きました。resultのURLの拡張子を、jspからactionへ変更しただけです。
ちなみにアクションクラスは用意していません。あるのはJSPだけです。

    <global-results>
      <result name="db-error" type="redirect">/errors/db-error.action</result>
    </global-results>

    <global-exception-mappings>
      <exception-mapping exception="foo.bar.DatabaseException" result="db-error"/>
    </global-exception-mappings>


アクションクラスがなくても、JSPだけで動作するみたいですね。知らんかった…