销毁@SessionScoped的简便方法是什么?

时间:2013-10-21 02:30:58

标签: jsf jsf-2

我的问题是te数据没有在数据表中刷新。当我点击菜单中的项目时,我想破坏会话范围。我知道可以使用Viewscoped,但我想学习其他方式。 谢谢高级。

控制器:

@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>`

1 个答案:

答案 0 :(得分:3)

没有真正“干净”的方式。 @SessionScoped bean应该和Session一样长。因此,我再次强调你应该更好地调整豆子范围。

但如果你真的还需要这样做,那么最简单的方法就是这样做:

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

对于@ViewScoped bean,你可以这样做:

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