2014-05-04 55 views
0

Hy,JSF是否在会话中存储UIComponents?

我是JSF的新手,我读过关于JSF如何在会话中存储UIComponents或通常说的屏幕。有些问题:

  1. 当你请求例如JSF文件,JSF首先分析它,并会建立像与他的渲染器,验证器,转换记忆的画面表示,因为JSF将处理来自更快的下一次这种观点请求因为它已经用他的验证器,转换器......创建了这个UIComponent结构,对吗?

  2. 使用带有java代码的JSF,您可以修改向用户呈现的屏幕,例如java swing,对不对?

  3. 这些屏幕保存在会话中,对吗?

  4. 我不知道的是,如果JSF可以重新填充表单,例如当用户按下浏览器中的后退按钮时,他发送的值,这可能吗?

  5. 表单字段的值保存在模型bean中,但这些值存储在其他地方?在UIComponent结构中可能?

  6. 如果用户按下浏览器的后退按钮并且他在表单中发送的值被保存在具有请求范围的bean中,会发生什么情况,它将无法重新填充表单,除非它存储UIComponent结构中的表单,对吗?

感谢

回答

0
  1. 有可能是一些缓存,但它是不是在设计或规范固有据我所知。
  2. 您可以修改演示文稿,是的;像javax,swing,no。
  3. 如果浏览器重新发送POST,第一次发生的事情将会发生。表单字段值被重发,JSF处理它们,与以前一样,
  4. 表单字段的值位于表单字段中,并位于通过EL指定为值的任何支持bean属性中。参见(4)。同样的问题,相同的答案。
+0

- 根据本说明书中,组件树将被创建或检索。我认为它必须有一些缓存强制性行为 - 为什么表单输入的值存储在服务器的表单域中,除了支持bean? – user3254515

0

对于您的主题问题:默认情况下,是的。除非该组件被标记为瞬态

对于你的问题:

1)这是不(仅仅)的速度。视图的恢复是必要的,因为它保存了关于所需转换器,验证器以及UI和你的bean之间的连接的信息。即EL表达式。如果您没有活动视图,并且触发了回发请求(使用ViewState),您将看到ViewExpiredException。如果您在没有ViewState的情况下触发请求,则会生成新视图。

2.)基本上是的。它是就像摇摆你可以务实地向树添加新的组件。

3。)默认情况下,是的。但是你可以编写你自己的StateManager,你可以在任何你想要的地方存储和查看视图。

4.)后退按钮(默认情况下)返回浏览器的历史记录并显示缓存中的页面。如果您的视图不是暂时的,则可以将其存储在会话中,除非它太旧(请参阅corresponding context param)。如果您从旧视图中触发请求,并且该视图仍在会话中,则会正确处理该视图。否则,它将在APPLY_REQUEST阶段抛出ViewExpiredException。

5.)这些值存储在你的bean中。该组件仅保持EL表达指向您的bean的属性

6.)请参阅第4)和5)