StateHelper的角色和生命周期是什么?

Ioa*_*nis 5 jsf jsf-2

我可以看到EL属性存储在组件映射中的StateHelper和字符串文字中getAttributes().什么是生命周期以及为什么需要两个容器?

EL ValueExpression评估的生命周期中的哪些点?(每次getStateHelper.eval()被叫?)

kol*_*sus 8

  1. StateHelper为组件开发人员(UIComponent直接子类而不是标准组件)提供了便利,以便跨请求维护组件的状态.它在JSF视图状态保存中起着不可或缺的作用,底层契约提供的不仅仅是隐藏组件属性的方法.

    通过继承StateHelper,组件开发人员可以更方便钥匙插入saveStaterestoreState方法StateHolder,这是应该的方法来保证JSF默认地将Impl的一个组件(及其子组件)有他们的状态正确地持久化(按照所配置的状态省电模式).

    getAttributes()map 相比,map基本上是一个组件变量的藏匿处,并且在单个请求的生命周期中大部分是相关的.除了保留东西之外,它不提供其他服务.

  2. ValueExpression在组件的生命周期中评估至少 2倍:RESTORE_VIEWUPDATE_MODEL_VALUES阶段,原因显而易见:第一个给出适当的组件呈现,第二个是将经过验证和转换的值提交给支持bean