如何从Servlet访问@ViewScoped管理的bean?

9
我想在Servlet中访问一个视图范围内管理的Bean。
我搜索了类似的问题并找到了以下内容: 如何从视图范围获取Bean使用FacesContext.getCurrentInstance(),但在Servlet内不适用,因为它应该给出空结果 JSF-按名称获取托管Bean处理所有其他范围,但不包括viewscope 我认为这是不可能的,对吗?
有一个简单的解决方法是将bean范围更改为会话范围,但这是最后的机会,因为我担心内存消耗。
我的最终需求是:managebean包含在dataTable中显示的一些数据。同一页还应包括这些数据的图表表示(必填)的图像。图像可以由Servlet生成,但它需要访问数据或从数据库重新加载它们。
我也尝试了来自PrimeFaces 2.X的<p:graphicImage>,但它与viewscope bean不兼容。有什么建议吗?
1个回答

7
不可能的,视图作用域与特定的JSF视图相关联,而这在普通的HTTP servlet请求中不是一种方式。请注意,在普通的HTTP servlet请求期间,您也无法访问具体的请求范围bean,它们将始终返回"null"。会话作用域是您可以获得的最好的范围。在servlet中完成后,只需从会话作用域中删除属性即可。
session.removeAttribute("somename");

无论何时我有JSF相关的问题,我知道我可以依靠你。谢谢。 - Filippo
BalusC说:“请注意,在普通的HTTP servlet请求期间,您也无法访问具体的请求作用域bean...” 你能解释一下为什么吗?谢谢。 - J Slick
@JMS:简单来说,这不是用于JSF页面的相同HTTP请求... - BalusC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接