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で上書きされる可能性があるので実装時には十分に考慮する必要ある。

【関連する記事】

Comments:0

Comment Form

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Remember personal info

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, JavaScripter Blog

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

Tag cloud
Categories
月別アーカイブ
このブログについて
author:hisasann

description:フリーランスで仕事しているプログラマーです。
最近はJavaScript、Rails、Java(Struts+Spring)なんかをいろいろといじっています。
今やってみたいのはFlashやActionScriptかな。
また誕生して半年になる子供の成長を見守るパパでもあります。

日々の日記 :

他に運営しているブログ:

利用しているWebサービス :
最近のコメント
Powered by
Powered by
Movable Type 3.35

Page Top