1

我的问题是数据表中的数据未刷新。当我单击菜单中的项目时,我想销毁会话范围。我知道 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>`
4

1 回答 1

3

没有真正“干净”的方式来做到这一点。一个@SessionScopedbean 应该和一个 Session 一样长。因此我再次强调,您应该更好地调整 bean 范围。

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

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);
}
于 2013-10-21T04:38:23.420 回答