zoukankan      html  css  js  c++  java
  • JSF教程(11)——生命周期之Invoke Application Phase

    在这个阶段JSF实现将处理不论什么应用界别的事件,比如表单的提交或者链接点击后跳转到还有一个页面。

    这时假设应用须要重定向不同 的web应用字眼或者产生一个资源其并不喊不论什么的JSF组件,那么就调用FacesContext.responseComplete方法。

    假设正在被处理的这个视图是从重建状态信息从先前的一个请求并且假设一个组件引发了一个事件,那么这些事件将会传递到相关的监听器中。

    终于JSF实现者将控制权转移到下一个步骤render Response phase

    这个阶段是整个JSF宏观生命周期中Execute阶段的最后一个阶段。前面依次经历了几个对值进行处理的阶段:通过依据不同的请求对view进行处理(Restore View Phase),然后取值(Apply Request Values Phase),验证值的合法性(ProcessValidations Phase)。更新页面中组件的值(Update Model Values Phase)。终于拿到值之后開始了对事件的处理。

    public void execute(FacesContext facesContext) throws FacesException {
    
            if (LOGGER.isLoggable(Level.FINE)) {
                LOGGER.fine("Entering InvokeApplicationsPhase");
            }
    
            UIViewRoot root = facesContext.getViewRoot();
            assert (null != root);
    
            try {
                root.processApplication(facesContext);
            } catch (RuntimeException re) {
                String exceptionMessage = re.getMessage();
                if (null != exceptionMessage) {
                    if (LOGGER.isLoggable(Level.WARNING)) {
                        LOGGER.log(Level.WARNING, exceptionMessage, re);
                    }
                }
                throw new FacesException(exceptionMessage, re);
            }
    
            if (LOGGER.isLoggable(Level.FINE)) {
                LOGGER.fine("Exiting InvokeApplicationsPhase");
            }
    
        }

    假设对processApplication方法感兴趣的童鞋能够反编译看一下源代码。

    事实上在javaee的文档中对这种方法的描写叙述已经非常清楚了。

    Broadcastany events that have been queued for the Invoke Application phase of therequest processing lifecycle and to clear out any events for later phases ifthe event processing for this phase caused FacesContext.renderResponse() orFacesContext.responseComplete() to be called. 

    大致的意思就是为此阶段传递事件,并且清除引起上面两个方法被调用的事件。由于这两个方法被调用标志着整个请求的结束。可是眼下阶段还未全然处理完请求。

    到此为止整个JSF的生命周期宏观上的Execute部分(在server上所运行的部分)就已经运行完成了。接下来就是渲染client的页面了。

  • 相关阅读:
    近段时间学习html和CSS的一些细碎总结
    循环队列
    【IOS】IOS高速入门之OC语法
    2014华为机试-字符串替换
    自己动手写操作系统--个人实践
    HBase学习(十四)LINUX下用Eclipse构建HBase开发环境
    IOS成长之路-Nsstring中搜索方法rangeOfString
    Java JDBC连接SQL Server2005错误:通过port 1433 连接到主机 localhost 的 TCP/IP 连接失败
    java 不同意同一账户不同IP 同一时候登录系统解决的方法 兼容IE Firefox
    十二.200多万元得到的创业教训--app名字是关键
  • 原文地址:https://www.cnblogs.com/llguanli/p/7146406.html
Copyright © 2011-2022 走看看