Home > 技術 > StrutsでActionを複数経由する場合の注意点

StrutsでActionを複数経由する場合の注意点


1回のリクエストで複数のActionを経由する場合、Actionが呼ばれるたびにActionFormのSetter・Getterが呼ばれるので、1つ目のActionで設定した値が2つ目のActionで元に戻る場合がある。

たとえば以下のようにTest1Actionが呼ばれてsuccessのときに自動的にTest2Actionが呼ばれるように実装した場合である。


 <action path="/Test1Action"
  type="Action"
  name="ActionForm"
  scope="session"
  validate="false">
   <forward name="success" path="/Test2Action.do" />
 </action>

 <action path="/Test2Action"
  type="Action"
  name="ActionForm"
  validate="false">
  validate="false">
   <forward name="success" path="test.jsp" />
 </action>

値が元に戻ってしまうならまだ処理が落ちてしまうことはないが、例えば画面でListを持っててRequestのたびにActionFormに対してSetter・Getterが動く場合

  • Test1ActionでActionFormのListSetterが動く

  • Test1ActionのActionでListをプログラム側でnullにする

  • Test2ActionでActionFormのListSetterが値をセットしようとしてServletExceptionが発生

たしかにnullにしたListに対してSetterが動けばそれはエラーとなってしまう。
これは画面上にはServletExceptionがドドンと表示されるので一見何が起こっているのか分かりにくい。
ただし、こういった内容を知っていればもしかしてあそこか?となるので開発のスループットは上がるだろう。

実はListがnullのときにServletExceptionが発生しない方法があるが、その機能に関しては以下がとっても読みやすい。
civic site : LazyListを使うともっと楽だった

確かにこの方法で回避できるが、忘れてはいけないのは毎回ActionFormのSetter・Getterが動くということである。思ったとおりの値が2回目のSetterで上書きされる可能性があるので実装時には十分に考慮する必要ある。

Trackback:0

TrackBack URL for this entry
http://hisasann.com/cgi-bin/mt/mt-tb.cgi/497
Listed below are links to weblogs that reference
StrutsでActionを複数経由する場合の注意点 from HouseTect, JavaScriptな情報をあなたに

Home > 技術 > StrutsでActionを複数経由する場合の注意点

Tag cloud
カテゴリー
月別アーカイブ
Powered by
Powered by
Movable Type Commercial 4.261

Page Top