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