2013-10-21 43 views
1

我的問題是te數據不在數據表中刷新。我想在點擊菜單中的項目時銷燬會話範圍。我知道使用Viewscoped可能會有這種情況,但我想學習其他方法。 先進的感謝。銷燬@SessionScoped的便利方法是什麼?

控制器:

@ManagedBean 
@SessionScoped 
public class MyController implements Serializable { 
//getters and setters 
........... 
} 

菜單:

<td><h:outputLink styleClass="itemOutputLink" value="# {request.contextPath}/pages/page.faces">Page1</h:outputLink></td>` 
+2

更改bean到'@ ViewScoped'。 –

+0

換句話說,你不希望它成爲會話作用域。 – EJP

+0

我真的想保持會話範圍,我只想從菜單中刪除會話範圍。 – user2683519

回答

3

有沒有真的 「乾淨」 這樣做的方式。一個@SessionScoped豆應該只要一個Session就能生存下來。因此我再次強調你應該更好地調整豆的範圍。

但如果你真的還需要做到這一點,最簡單的方法是做這樣的:

public static void removeSessionScopedBean(String beanName) 
{ 
    FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove(beanName); 
} 

對於@ViewScoped豆你可以這樣來做:

public static void removeViewScopedBean(String beanName) 
{ 
    FacesContext.getCurrentInstance().getViewRoot().getViewMap().remove(beanName); 
} 
+0

謝謝,我必須使用removeSessionScopedBean(「MyController」); – user2683519

+2

@ user2683519如果它適合您,請將其標記爲已接受。那麼它將不會被列爲未答覆。 – noone