如何从 Servlet 访问 JSF ViewScoped 托管 bean?
(假设有问题的托管 bean 已经创建,但仍未被销毁)
视图范围的变量存储在组件树的视图映射中。要在视图上下文之外访问这些数据,您必须创建一个 JSF 上下文并为请求恢复视图。这涉及重写JSF 容器提供的大部分功能。
JSF 2 提供了无需刷新页面即可与服务器端状态交互的机制:AJAX 标记和JSF JavaScript API。如果可能的话,我会考虑利用这些。
或者,将数据放入可通过 servlet(会话)轻松访问的范围内。
由于视图状态通常保存在会话中,因此在技术上很可能从这里访问视图状态。但这将涉及特定于实现的黑客行为,这些黑客行为可能无法在底层框架升级后幸免于难。我什至不会将此视为解决方案。