我希望BalusC或其中一位JSF专家可以帮助我理解JSF生命周期的细节,尤其是渲染。
我很难理解的是,在渲染响应期间,从模型中获取值并显示给用户。现在,如果存在验证错误,则不会更新模型,因此渲染器必须向组件树显示用户无效值。这一切都很好但是渲染器如何确定是从模型中读取还是从组件树中读取?如果它来自组件树,这是否意味着如果请求通过验证并且事件处理程序在呈现之前更新模型值,那么这些值是否会反映给用户?
我已经阅读了很多关于jsf生命周期的内容,但我发现的任何内容都不足以回答我的问题。我想准确理解这些东西是如何运作的。
答案 0 :(得分:4)
在申请请求值阶段,所有请求参数都在UIInput
setSubmittedValue()
上设置为提交值。
在验证阶段,仅当值有效时,提交的值设置为null
,转换和验证的值在UIInput
上由setValue()
设置。因此,如果该值无效,则提交的值不会设置为null
。
在更新模型值阶段期间,将使用该值更新模型值。
在渲染响应阶段,UIInput
渲染器首先检查getSubmittedValue()
是否未返回null
。如果没有(因此,验证失败),则显示它。否则只显示模型值。