6

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

EL 在生命周期中的哪些点进行ValueExpression评估?(每次getStateHelper.eval()调用?)

4

1 回答 1

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

    通过子类化StateHelper,组件开发人员可以更方便地键入 JSF Impl 的saveStaterestoreState方法StateHolder,这些方法应该保证组件(和子组件)的状态正确持久(根据配置的状态保存模式)。

    相比之下,getAttributes()map 基本上是组件变量的存储,并且在单个请求的生命周期中主要相关。除了保存东西,它不提供其他服务。

  2. ValueExpression在组件的生命周期中至少评估2 次:RESTORE_VIEWUPDATE_MODEL_VALUES阶段,原因很明显:第一个是对组件进行适当的渲染,第二个是向支持 bean 提交经过验证和转换的值

于 2013-05-12T04:38:26.840 回答