0

我正在开发一个 JSF 1.2+RichFaces系统。这个系统是一种博客。用户可以创建自己的博客并对其进行管理。可以通过 url 类型访问博客:

www.meublog.com/NameOfBlog

我使用了一个单一Managed Bean的会话范围来制作所有控件。当用户访问博客时,我使用过滤器通过 URL 识别正在访问的博客,将ID博客的 放入会话中并转发给博客索引。我使用此会话ManagedBean来控制博客视图中的所有内容。问题是浏览器在多个选项卡之间共享相同的会话。当用户www.meublog.com/julio在一个选项卡和www.meublog.com/fulano另一个选项卡上访问这样的博客时,我无法识别这两个博客,因为我只建立了一个会话。

我想知道是否有人知道这里的正确路径......

4

1 回答 1

1

出于您所面临的原因,您不应将请求范围的信息存储在会话范围中。使用请求范围的托管 bean,而不是根据请求 URI 进行初始化。ExternalContext您可以通过和/或获取大部分请求详细信息HttpServletRequest

例如,在 bean 的构造函数或@PostConstruct方法内部:

ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();

// If you use suffix mapping like *.jsf
String servletPath = ec.getRequestServletPath(); 

// Or if you use prefix mapping like /faces/*
String pathInfo = ec.getRequestPathInfo();

// Now initialize based on the value of either servletPath or pathInfo.

也可以看看:

于 2012-05-24T22:09:59.910 回答