9

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

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

如何从使用的视图范围获取bean FacesContext.getCurrentInstance(),在Servlet中不适用,因为它应该给出空结果

JSF - 按名称获取托管 bean,它处理所有其他范围但不处理视图范围

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

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

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

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

4

1 回答 1

7

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

会话范围是你能得到的最好的。在 servlet 中完成该属性后,您可以从会话范围中删除该属性。

session.removeAttribute("somename");
于 2012-11-20T12:05:14.567 回答