【发布时间】:2015-02-28 00:09:25
【问题描述】:
我正在尝试了解 JSF 的生命周期,并且正在阅读以下教程:
上面写着:
视图包含所有的 GUI 组件,并且有很多 JSF 的状态管理来跟踪视图的状态——通常 使用 HTML 隐藏字段。
我很困惑,JSF 应用程序是在与客户端交互期间保持该托管 bean 的状态,还是它使用 HTML 隐藏字段,并模拟有状态 bean。
【问题讨论】:
我正在尝试了解 JSF 的生命周期,并且正在阅读以下教程:
上面写着:
视图包含所有的 GUI 组件,并且有很多 JSF 的状态管理来跟踪视图的状态——通常 使用 HTML 隐藏字段。
我很困惑,JSF 应用程序是在与客户端交互期间保持该托管 bean 的状态,还是它使用 HTML 隐藏字段,并模拟有状态 bean。
【问题讨论】:
术语“JSF 状态”不涉及托管 bean 属性(模型值)。它涉及到 UI 组件属性,例如 required、valid、immediate、disabled、readonly、rendered 等。这基本上只被一个隐藏输入字段引用,而不是多个字段作为该教程似乎暗示。隐藏的输入字段是名称中带有javax.faces.ViewState 前缀的字段。
从技术上讲,JSF 托管 bean 始终是有状态的。状态性通过是否具有可变实例变量来表示。 Javabeans 基本上总是可变的,因此是有状态的。然而,JSF 托管 bean 状态不存储在“JSF 状态”中。 JSF 托管 bean 只是存储在服务器的内存中,通常作为 HTTP 请求、会话或应用程序的属性。
与具体问题无关,您正在阅读的教程是针对 JSF 1.x 的教程。 JSF 2.x 是在 5 年前推出的。如果是开发人员教程,请始终注意发布日期以及它处理的版本。您可以通过our JSF wiki page 开始。
【讨论】: