如何从Servlets访问@ViewScoped托管bean?

时间:2012-11-20 09:12:51

标签: jsf servlets view-scope

我想访问Servlet中的视图范围托管bean。

我搜索了类似的问题并得到了这些问题:

使用FacesContext.getCurrentInstance()

how to get beans from view scope,在Servlet中不适用,因为它应该给出null结果

JSF - get managed bean by name处理所有其他范围但不处理viewcope

我认为这是不可能的,是吗?

有一个简单的解决方案可以将bean范围更改为会话范围,但这是最后的机会,因为我担心内存消耗。

我的最终需求如下:managebean包含dataTable中显示的一些数据。同一页面应包括这些数据的图表表示的图像(强制性)。图像可以由Servlet生成,但它需要访问数据或从db重新加载它们。

我也尝试过来自PrimeFaces 2.X的<p:graphicImage>,但它与viewscope bean不兼容。有什么建议吗?

1 个答案:

答案 0 :(得分:6)

那是不可能的,不。视图范围与特定的JSF视图相关联,这在普通的HTTP servlet请求中是无法实现的。请注意,在普通的HTTP servlet请求期间,您无法访问具体的请求范围bean,它们将始终返回null

会话范围是您可以获得的最佳范围。一旦在servlet中完成了属性,就可以从会话范围中删除该属性。

session.removeAttribute("somename");