【问题标题】:Does JSF store UIComponents in session?JSF 是否在会话中存储 UIComponents?
【发布时间】:2014-06-21 04:15:06
【问题描述】:

喂,

我是 JSF 的新手,我已经阅读了 JSF 如何在会话中存储 UIComponents 或通常所说的屏幕。一些问题:

    1234563用他的验证器、转换器......创建了这个 UIComponent 结构,对吧?
  1. 使用带有 java 代码的 JSF,您可以像 java swing 一样修改呈现给用户的屏幕,对吧?

  2. 这些屏幕保存在会话中,对吧?

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

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

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

谢谢

【问题讨论】:

    标签: jsf uicomponents


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

    【讨论】:

    • - 根据规范,将创建或检索组件树。我认为它必须有一些缓存强制行为 - 为什么除了支持 bean 之外,表单输入的值还存储在服务器的表单字段中?
    【解决方案2】:

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

    对于你的问题:

    1.) 这不(只是)为了速度。需要恢复视图,因为它包含有关所需转换器、验证器以及 UI 和 bean 之间连接的信息。即EL表达式。如果您没有活动视图并且触发了回发请求(带有 ViewState),您将收到 ViewExpiredException。如果触发没有 ViewState 的请求,则会生成一个新视图。

    2.) 基本上是的。 类似于摇摆,您可以务实地向树中添加新组件。

    3.) 默认情况下,是的。但是您可以编写自己的 StateManager,并且可以在任何地方存储和检索视图。

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

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

    6.) 见 4.) 和 5.)

    【讨论】:

      猜你喜欢
      • 2011-12-29
      • 2015-12-16
      • 2010-12-28
      • 2010-12-10
      • 2011-10-24
      • 1970-01-01
      • 2015-05-15
      • 2012-04-08
      • 2011-06-10
      相关资源
      最近更新 更多