1.javax.faces.webapp.FacesServlet
init方法用于启动基本的faces。它演示了如何使用FactoryFinder来创建LifeCycle和FacesContext工厂
service方法演示了LifeCycle对象控制整个JSF处理
2.javax.faces.component.UIViewRoot
queueEvent方法在组件决定激活一个value-change事件(或者其他类型的事件)时被调用。事件队列的有意思的地方是:
javax.faces.component.UIInput的验证方法
org.apache.myfaces.renderkit.html.HtmlButtonRendererBase的decode方法
3.javax.faces.component.UIComponentBase
getRenderer方法演示了如何使用当前视图中的renderkit-id、组件声明的组件家族和组件声明的renderer-type名称来决定使用哪一个renderer。
4.javax.faces.webapp.UIComponentTag
createComponentInstance演示了在JSP标记引用UIComponent组件并且组建不存在于view众时,如何实例化这个组件,通过调用Application.createComponent(String),注意该createComponentInstance方法调用自己的getComponentType()方法,这个方法典型的实现了JSF终端标记类,例如org.apache.myfaces.taglib.html.HtmlCommandButtonTag。
5.javax.faces.componnet.UIInput
processDecodes、processValidators、processUpdates方法演示了表单数据是如何变成模型的数据,通过转换和验证的处理。对于多数的组件,实际的工作过程为Apply Values、Process Validators和Update Model阶段。注意,数据从表单中开始,加载到组件的提交值字段,转换成组件的本地值字段,然后拷贝到后台bean。很多条件影响到process的出口,例如rendered state、immediate state、conversion errors和validation errors。