メンチカツには醤油でしょ!!

ITエンジニア徒然 (AWS/Java/JavaScript/Google Spreadsheets/Jenkins/Mac/外部コミュニティ・勉強会レポ)

Struts2のInterceptorを挟むとActionへ値が渡らない

バージョンと設定

Tomcat 8.x
Struts 2.3.24.1
struts.xml での struts.enable.DynamicMethodInvocation は true

そもそもInterceptorを呼び出すのに苦労…

struts2-convention-pluginを使って
DynamicMethodInvocationをtrueにしていると
struts.xmlにてpackageのactionを書かないのですが
どうもそんなサンプルが全然出てこなくて…

結局のところ

<!-- package部分を抜粋 -->

<package name="default" extends="struts-default">
  <interceptors>
    <interceptor name="略1" class="Interceptorクラスの完全修飾名">
    </interceptor>
    <interceptor name="略2" class="またまた完全修飾名">
    </interceptor>
    <interceptor-stack name="default">
      <interceptor-ref name="略1" />
      <interceptor-ref name="略2" />
      <interceptor-ref name="defaultStack" />
    </interceptor-stack>
  </interceptors>
  <default-interceptor-ref name="default" />
</package>

この<default-interceptor-ref name="default" />が抜けていただけで呼ばれなかった。

Interceptorは呼ばれるけどActionに値がセットされない

次にこれが起きるのですが
これは<interceptor-ref name="defaultStack" />が足りないのが原因の模様。

これで30分かかった・・・