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