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

时间:2013-05-11 11:09:15

标签: jsf jsf-2

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

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

1 个答案:

答案 0 :(得分:8)

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

    通过子类化StateHelper,组件开发人员可以更方便地键入saveState的{​​{1}}和restoreState方法,这些方法应该保证组件(和子组件)使其状态正确保持(按照配置的状态保存模式)JSF Impl。

    StateHolder映射与基本上是组件变量藏匿的映射进行对比,并且在单个请求的生命周期中最相关。除了保留东西之外,它不提供任何其他服务。

  2. getAttributes()在组件的生命周期中评估至少 2x:ValueExpressionRESTORE_VIEW阶段,原因显而易见:第一个给出适当的渲染组件,第二个,将验证和转换后的值提交给支持bean