我对视图范围很困惑。我认为它可以在JSF导航到另一个页面(显然没有重定向),但它没有。那么使用它而不是请求范围有什么好处,如果我召唤相同的视图它将是同一个对象?
答案 0 :(得分:28)
优点是bean能够在回发中保持相同的视图。在rendered
属性中使用或作为h:dataTable
的模型或隐藏输入等时,您不需要自己保留任何数据。在过去,很多黑客被用来解决这个问题。
只要您与相同的视图进行交互(即在bean操作方法中返回void
或null
),视图范围内的bean就会存在。当您离开另一个视图时,例如通过单击链接或返回不同的操作结果,视图范围bean将在渲染响应结束时被删除,并且在下一个请求中不可用。
答案 1 :(得分:9)
直接从Core JavaServer Faces, 3rd Edition:
撕开查看范围
在JSF 2.0中添加了查看范围。视图范围内的bean会保持同样的状态 重新显示JSF页面。 (JSF规范使用术语视图作为JSF页面。) 一旦用户导航到另一个页面,bean就会超出范围 如果您有一个不断重新显示的页面,那么您可以放置bean 将此页面的数据保存到视图范围内,从而减小了该页面的大小 会话范围。这对Ajax应用程序特别有用。
答案 2 :(得分:0)
也许您正在寻找 FlowScoped bean:
JavaServer Faces技术的Faces Flows功能允许您创建一组范围为 FlowScoped 的页面,该范围大于请求范围但小于会话范围。 例如,您可能希望为在线商店中的结帐流程创建一系列页面。您可以根据需要创建一组可以从一个商店转移到另一个商店的自包含页面。