ひがやすを技術ブログ

電通国際情報サービスのプログラマ

S2ViewHandler

S2JSFの動きをコントロールしているのは、S2ViewHandlerで、JSFのViewHanlderを拡張して実装されています。こいつで重要なのは、次の3つのメソッドです。

  • restoreView
    • ページに関連付けられているコンポーネントツリー(UIViewRoot)を復元します。コンポーネントツリーは、セッションに格納されているみたい。セッションに対する最初のリクエストで、まだコンポーネントツリーがない場合は、次のcreateViewが呼び出されます。
  • createView
    • コンポーネントツリーを作成します。S2JSFでは、最初にあるページにリクエストがあったときに、HTMLをViewTemplate(S2JSF独自)にコンパイルしてキャッシュします。ViewTemplate.createView()がコンポーネントツリーを作成しています。あるページに2つめ以降のセッションからリクエストがあった場合は、キャッシュされたViewTemplateのcreateView()が呼び出されます。同一セッションに対して、あるページに複数リクエストがあった場合は、2回目以降は、createView()は呼び出されません。restoreView()がコンポーネントツリーを返しているためです。
  • renderView