我想访问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不兼容。有什么建议吗?
答案 0 :(得分:6)
那是不可能的,不。视图范围与特定的JSF视图相关联,这在普通的HTTP servlet请求中是无法实现的。请注意,在普通的HTTP servlet请求期间,您无法访问具体的请求范围bean,它们将始终返回null
。
会话范围是您可以获得的最佳范围。一旦在servlet中完成了属性,就可以从会话范围中删除该属性。
session.removeAttribute("somename");