4

我希望 BalusC 或你们中的一位 JSF 专家可以帮助我了解 JSF 生命周期的细节,尤其是渲染。

我很难理解的是,在渲染响应期间,值是从模型中获取并显示给用户的。现在,如果出现验证错误,模型不会更新,因此渲染器必须向用户显示组件树中的无效值。这一切都很好,但是渲染器如何确定是从模型中读取,还是从组件树中读取?如果它来自组件树,这是否意味着如果请求通过验证并且事件处理程序在渲染之前更新模型值,这些值是否会反映给用户?

我已经阅读了很多关于 jsf 生命周期的内容,但我发现没有任何内容深入到足以回答我的问题。我想准确地了解这些东西是如何工作的。

4

1 回答 1

5

在应用请求值阶段,所有请求参数都设置为由 提交UIInput的值setSubmittedValue()

在验证阶段,只有且仅当值有效时,提交的值才会设置为null并且转换和验证的值设置UIInputsetValue()。因此,如果该值无效,则提交的值将不会设置为null.

在更新模型值阶段,使用该值更新模型值。

在渲染响应阶段,UIInput渲染器首先检查 if getSubmittedValue()doesn't return null。如果没有(因此,验证失败),则显示它。否则只显示模型值。

于 2012-06-10T00:27:36.177 回答