Java JSF视图范围未关闭

Java JSF视图范围未关闭,java,jsf,jsf-2,Java,Jsf,Jsf 2,第一: 我有两颗豆子 Bean A: @可视范围 包含一个lazyloading数据表,具体取决于在@PostConstruct中初始化的某个会话值 豆豆B: @可视范围 更改Bean中使用的会话值 我做以下事情 使用BeanB设置JSF站点的会话数据 加载使用Bean A的jsf站点 使用Bean B设置其他会话数据 再次加载使用Bean A的jsf 问题如下: 如果我再次用Bean A加载JSF站点,则初始化datatable的PostConstruct不会再次加载 我认为如果我

第一:

我有两颗豆子

Bean A:

  • @可视范围
  • 包含一个lazyloading数据表,具体取决于在@PostConstruct中初始化的某个会话值
豆豆B:

  • @可视范围
  • 更改Bean中使用的会话值
我做以下事情

  • 使用BeanB设置JSF站点的会话数据
  • 加载使用Bean A的jsf站点
  • 使用Bean B设置其他会话数据
  • 再次加载使用Bean A的jsf
问题如下:

如果我再次用Bean A加载JSF站点,则初始化datatable的PostConstruct不会再次加载

我认为如果我使用视图范围,那么如果我浏览不同的JSF站点,ManagedBean就会被破坏


请帮我理解这个问题。我做错了什么?

应该是的。只要您停留在同一视图上,视图范围就应该保持不变


然而,在过去的JSF版本中,这个范围存在很多问题,包括与后构造相关的问题;您现在使用的是哪个版本?应该在应用程序启动期间的日志中提到这一点。

您是如何执行“再次加载使用Bean A的jsf”步骤的。通过一个新的HTTP GET请求,对吗?这个请求肯定不是从浏览器缓存中提供的?好的,你是怎么管理你的豆子的?使用JSF自己的
@javax.faces.bean.ManagedBean
或其他东西?每个bean都用javax.faces.bean.ManagedBean注释,在这种情况下有自己的视图注释javax.faces.bean.viewscope。对于大多数bean,我使用javax.faces.bean.RequestScoped,但在这种情况下,我需要重新加载构造函数或post构造,因为我有一个依赖于用户可以在其他jsf站点中选择的其他对象。使用bean a的jsf站点有一个对话框,该对话框使用另一个托管bean C,也具有ViewScoped。这可能是个问题吗?我通常使用码头。在tomcat中部署我的应用程序有以下几点:我使用Bean A和C在同一个jsf站点上启动了一些get请求,每次都使用ViewScope链接的托管Bean创建新的。。