• JSF和Facelets的生命周期


    JSF的生命周期:

    1:重载视图。试图从session,cookie还原JSF组件树,不能重载的视为第一次请求,直接转到renderview,画面重画阶段,对画面进行重画

    2: 应用请求值阶段

      主要把浏览器过来的数据反映到对应的组件。也可以看做数据绑定。另外还作了一个很重要的处理。事件EVENT的队列进入处理。

    此处被加入队列中的消息事件在第五个阶段被加以处理。

       主要调用过程是:Lifecyle.execute()->ApplyRequestValuesPhase.execute()->Component.processDecodes()

    ->Component.decode()->Component.valueBinding->Renderer.decode()->Component.queueEvent()

    3:验证 合法性检查阶段

         此阶段对数据进行合法性检查。检查有错时,跳转到画面重画阶段进行重画

    4 更新模型值

         此阶段把经过变换  (converter  变换等)后的组件反映到 backingbean

          主要调用过程:Lifecycle.execute()->UpdateModleValuesPhase.execute()->UIViewRoot.processUpdates->HtmlForm.processUpdates->

    UIInput.processUpdate->UIInput.updateModel-ValueBinding(#{beanname.propertyName})  backingbean

    5 事件处理 InvokeApplicationPhase (用户应用程序处理/事件处理阶段)

    这阶段主要调用用户的应用程序的事件处理方法,对真正的业务逻辑加以处理。它是JSF和用户程序进行接口的部分。

         调用过程Lifecycle.execute()->InvokeApplicationPhase.execute()->UIViewRoot.processApplication->HtmlCommandButton.broadcast->ActionListenerImpl.processAction-MethodBinding

    (#{beanName.method.methodName})->BackingBean.eventMethod

    6 render(页面重画) 同页面初始化的页面重画处理

    Facelets的生命周期:

    JSP 是种生成 servlet 的模板化语言。JSP 的主体与 servlet 的 doGet() 和 doPost() 方法等价(也就是说,成为 jspService() 方法)。JSF 定制标记(例如 f:view 和 h:form)只是调用 JSF 组件来呈现它们自己的当前状态。JSF 组件模型的生命周期独立于 JSP 生成的 servlet 的生命周期。这种独立性就是混淆的来源。

    与 JSP 不同,Facelets 这个模板化语言,从构建之初,就考虑了 JSF 的组件生命周期。使用 Facelets,生成的模板会构建组件树,而不是 servlet。这就允许更好的重用,因为可以把组件组合成另一个组件。
    Facelets 减少了编写定制标记才能使用 JSF 的需求。Facelets 本身就可以使用 JSF 定制组件。沟通 JSF 和 Facelets 只需要很少的特殊编码:要做的全部工作就是在 Facelet 标记库文件中声明 JSF 组件。在 Facelets 模板化语言中可以直接使用 JSF 组件,不用任何额外的开发。
    JSF 和 Java 服务器页面技术之间的不匹配,是 JSF 开发中的一个严重问题。问题是如何把 JSP 的动态内容集成到 JSF 基于组件的模型中。JSP 非常重视生成动态内容输出,而 JSF 需要 JSP 来协调组件模型的构建。因为这个任务超出了 JSP 原来的目的,所以产生了距离。
  • 相关阅读:
    2019 Multi-University Training Contest 3
    SDU暑期集训排位(2)
    2019牛客暑期多校训练营(第四场)
    2019牛客暑期多校训练营(第三场)
    2019 Multi-University Training Contest 2
    2019 Multi-University Training Contest 1
    hdu1158 Employment Planning(dp)
    hdu 1130How Many Trees?(卡特兰数)
    C++大整数类模板
    组合数模板
  • 原文地址:https://www.cnblogs.com/cxfff/p/8855334.html
Copyright © 2020-2023  润新知