CookieInterceptorについて2
以前CookieInterceptorについて調べた時(CookieInterceptorについて - Struts 2+Spring 2+Tiles+Acegi+iBatis+GWT+JUnit 4+JMockit でフルスタックJAVAフレームワーク)には、これはSetする場合に結局ActionがHttpCookieとかで汚染されてしまうので、あまり使いやすくないと感じた。
しかし templ2 型の result で Cookie のSetが行えるようになったので(独自ヘッダーを返すtempl2の使い方 - Struts 2+Spring 2+Tiles+Acegi+iBatis+GWT+JUnit 4+JMockit でフルスタックJAVAフレームワーク)、Action中でHttpCookieを意識しないでよくなった。
そうなると、俄然 CookieInterceptor が便利になる
struts.xml に次のように書けば userid プロパティがCookieで設定/保存される。
<action name="cookieTest" class="CookieTestAction" method="doCheck"> <interceptor-ref name="cookie"> <param name="cookiesName">userid</param> </interceptor-ref> <interceptor-ref name="transactauth_chk"/> <result name="success"> <param name="headers['Set-Cookie']">${ 'userid=' + userid }</param> <param name="location">/editconf.jsp</param> </result> <result name="input">/edit.jsp</result> </action>
Actionコード側ではuseridのgetter/setterを用意するだけで、HttpCookieがどうたらとかのCookieを全く意識しないでOK
ちょっとTIPS:mapも必要ないのでCookiesAwareもいらない