JSF的Managed bean是有状态的bean吗

Is JSF's Managed bean a stateful bean

我正在尝试了解 JSF 的生命周期,并且正在阅读以下教程:

JSF tutorial

它说:

The view contains all the GUI components and there is a great deal of state management by JSF to track the status of the view – typically using HTML hidden fields.

我很困惑,JSF 应用程序是在与客户端交互期间保持托管 bean 的状态,还是使用 HTML 隐藏字段,并模拟有状态 bean。

术语“JSF 状态”不涉及托管 bean 属性(模型值)。它涉及 UI 组件属性,例如 requiredvalidimmediatedisabledreadonlyrendered 等. 这基本上仅由一个隐藏的输入字段引用,而不是该教程似乎暗示的多个字段。那个隐藏的输入字段是名称中带有 javax.faces.ViewState 前缀的那个。

从技术上讲,JSF 托管 bean 始终是有状态的。状态性由是否具有可变实例变量来表示。 Javabean 基本上总是可变的,因此是有状态的。然而,JSF 托管 bean 状态不存储在“JSF 状态”中。 JSF 托管 bean 仅存储在服务器的内存中,通常作为 HTTP 请求、会话或应用程序的属性。

另请参阅:

  • Why JSF saves the state of UI components on server?

与具体问题无关,您正在阅读的教程是针对 JSF 1.x 的教程。 JSF 2.x 已经在 5 年前推出。如果是开发人员教程,请始终注意发布日期及其处理的版本。您可以从 our JSF wiki page.

开始