在JSF的几个生命周期阶段,分别会在以下几个阶段调用组件的Converter:
1,对于
UIInput组件:如果按钮事件的immediate属性为true(<h:commandButton immediate="true" .../>),JSF会在 [
Apply Request Values Phase:应用请求值阶段],反之,JSF会在[
Process Validations Phase:数据检查阶段] 检验用户输入的有效性,有效的情况下会调用绑定到该UIInput组件的Converter对用户输入进行转换。同时,跟UIOutput组件一样,JSF会在[
Render Response:重画画面阶段]调用Converter对UIInput进行显示前的变换处理
2,对于
UIOutput组件:JSF会在[
Render Response:重画画面阶段]调用绑定到该UIOutput组件的Converter对将要显示的值进行变换。
JSF的生命周期:一个典型JSF请求分成以下6个阶段:(http://www.lifevv.com/tenyo/doc/20070520012424461.html)
- Restore View Phase:重载视图阶段
- Apply Request Values Phase:应用请求值阶段 这个阶段主要做2件事:第一,把用户提交的数据设置到组件中去;第二,把用户事件(比如按下按钮等)加到事件队列。
- Process Validations Phase:数据检查阶段 这个阶段主要做数据的合法性检查,如果用户输入了非法数据,则在画面上显示相应的错误消息。
- Update Model Values Phase:更新模型值阶段 把组件里的值设置到Model中去。
- Invoke Application Phase:用户业务逻辑阶段 主要处理用户按钮事件等,调用业务逻辑处理(action)。
- Render Response:重画画面阶段 画面描画和展现。