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

还在生命周期的哪些时间评估EL ValueExpression? (每次调用getStateHelper.eval()吗?)

最佳答案

  • StateHelper为组件开发人员(直接继承UIComponent而不是标准组件的子类)提供了便利,使其可以在请求中维护组件的状态。它在JSF View 状态保存中起着不可或缺的作用,而基础契约(Contract)不仅提供了隐藏组件属性的方法。

    通过对StateHelper进行子类化,组件开发人员可以更方便地键入saveStaterestoreStateStateHolder方法,这些方法可以保证组件(和子组件)的状态正确(按照配置的状态保存模式)持久存在于JSF中。没错

    getAttributes()映射相反,ValueExpression映射基本上是组件变量的存储,并且在单个请求的生命周期中最相关。除了保留东西外,它不提供其他服务。
  • RESTORE_VIEW在组件的生存期内至少被评估为至少 2x:UPDATE_MODEL_VALUES和ojit_code阶段,原因显而易见:第一个提供适当的组件呈现,第二个将经过验证和转换的值提交到支持bean
  • 10-02 06:06