struts2 的action 是沒有scope的,但通過引用spring bean 可以達(dá)到有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作用域(因?yàn)橐恍┨厥獠僮鱾鲄⒌?/span>),但所有action都放到session會(huì)頭大的!!
?
經(jīng)過測試發(fā)現(xiàn)一個(gè)辦法,就是把不用的xxxAction在適當(dāng)?shù)臅r(shí)候從session當(dāng)中清除掉,這樣再下次使用(沒有關(guān)閉窗口的情況)的時(shí)候會(huì)再次創(chuàng)建xxxBean。
?
現(xiàn)在的難點(diǎn)在于什么時(shí)候清除比較合適,一般一個(gè)action都是負(fù)責(zé)一個(gè)功能,比如用戶的增、刪、改查等,不會(huì)涉及到其他對象,采購單的增、刪、改、查。這樣就可以在通過菜單切換功能(從用戶界面切到采購單界面)的時(shí)候?qū)倓偸褂玫挠脩舻?/span>action從session當(dāng)中清除。
?
基于這樣的思路,使用struts2 的攔截器(Interceptor)來監(jiān)聽特定的action,在菜單切換的時(shí)候從session中清除不用的action。
?
?
歡迎提出各種看法!
?
?
posted on 2012-05-30 21:29
Libo 閱讀(402)
評(píng)論(0) 編輯 收藏 所屬分類:
Spring 、
Struts2