【发布时间】:2014-03-21 18:35:09
【问题描述】:
我决定完全深入研究 JSF 2.0,因为我的项目需要深入了解它。我正在阅读JSF Lifecyle Debug,这是一篇关于 JSF 生命周期的精彩文章。在阅读本文时,我有以下困惑。
如果是初始请求,则在
Restore View Phase中创建一个空视图并直接发生Render Response Phase。此时没有要保存的状态。那么render response phase到底发生了什么?我在运行示例时有点困惑。文章指出,检索到的输入值在
Apply Request Values阶段设置在inputComponent.setSubmittedValue()中。如果验证和转换通过,则在inputComponent.setValue(value)和inputComponent.setSubmittedValue(null)运行中设置该值。在同一点文章指出,现在如果在下一个回发请求中更改了值,则将其与每次回发时始终为空的提交值进行比较,将调用 value change listener。这意味着如果我们甚至不更改值,因为提交的值将为空,那么 valueChangeListener 将始终被调用?我对这个说法感到困惑。有人可以详细说明一下吗?文章说明了
immediate属性的用法。如果在输入组件上设置了immediate属性,则理想情况下会跳过Process Validation Phase,但所有转换和验证都发生在Apply Request Values中。我的观点是,仍然在进行转换和验证时,跳过第三阶段有什么好处?检索值是什么意思?
我想知道,如果假设视图上有五个字段。 JSF 是否会列出这些值的一些集合并
Apply Request Values和Process Validations阶段逐一迭代它们?在本文的最后一点,它说明了何时使用
immediate属性。据我了解,如果在输入组件和命令组件中都设置了立即属性,它将跳过从应用请求值到调用应用程序的阶段,以获取任何不具有immediate的属性。那么最后一条语句是什么意思是登录表单中的“忘记密码”按钮,其中包含必填且立即的用户名字段和必填但非立即的密码字段。
我知道这些是非常基本的混淆,但明确这些主题肯定有助于提高 JSF 知识。
【问题讨论】:
标签: jsf jsf-2 lifecycle phase immediate-attribute