struts2 的action 是沒有scope的,但通過引用spring bean 可以達到有scope功能。
?
?
<action name="xxxAction" class="xxxBean">
<result name="success" >/success.jsp</result>
</action>
?
?xxxBean是在spring中配置的session作用域的bean.
?
@Service(value = "xxxBean")
@Scope(value = "session")
public class XxxAction {
...
}
?
?
?
想把action放到session作用域(因為一些特殊操作傳參等),但所有action都放到session會頭大的!!
?
經過測試發現一個辦法,就是把不用的xxxAction在適當的時候從session當中清除掉,這樣再下次使用(沒有關閉窗口的情況)的時候會再次創建xxxBean。
?
現在的難點在于什么時候清除比較合適,一般一個action都是負責一個功能,比如用戶的增、刪、改查等,不會涉及到其他對象,采購單的增、刪、改、查。這樣就可以在通過菜單切換功能(從用戶界面切到采購單界面)的時候將剛剛使用的用戶的action從session當中清除。
?
基于這樣的思路,使用struts2 的攔截器(Interceptor)來監聽特定的action,在菜單切換的時候從session中清除不用的action。
?
?
歡迎提出各種看法!
?
?
posted on 2012-05-30 21:29
Libo 閱讀(394)
評論(0) 編輯 收藏 所屬分類:
Spring 、
Struts2