Struts2アクションのスコープ
Struts2のアクションをSpringでBean生成させるときに以前 "request"スコープを使用していた(Struts2のAction専用のスキャン用Annotationを作る - Struts 2+Spring 2+Tiles+Acegi+iBatis+GWT+JUnit 4+JMockit でフルスタックJAVAフレームワーク)が、s:actionや Resultの chain などでの内部から同じアクションが呼び出された時に、 スコープが"request"だと問題があった。
正しくは "prototype" にする必要がある
以前の
@Struts2Action("UserAction") @Scope("request") public class UserAction extends ActionSupport implements ModelDriven<User> { @Resource private UserDAO udao; :
このコードは
@Struts2Action("UserAction") @Scope("prototype") public class UserAction extends ActionSupport implements ModelDriven<User> { @Resource private UserDAO udao; :
とする必要がある
ちょっとTIPS:1リクエスト中で同じアクションが2回呼び出されない限り問題はない、また性能面でも"request"も"prototype"も1回生成されるだけなので違いはない