ZKフレームノート4、汎用コンポーネント、ページ、デスクトップ

3317 ワード

コンポーネント(component)は、ラベル、ボタン、ツリーなどのユーザーインタフェース(UI)オブジェクトです.
ページ(page)はコンポーネントの集合です.
デスクトップ(desktop)は、同じURLリクエストを含むページです.
 
4.1、ZUMLページのライフサイクル
 
(1)ページ初期化フェーズ
ZKはinitという処理指示を実行します.このような処理指示が定義されていない場合、これ(初期化フェーズ)はスキップされます.
各init処理指示にはclass属性があり、指定したクラスの失敗を作成し、doInit()メソッドを呼び出します.ページの初期化クラスとしてMyInitクラスが指定されています.このクラスの処理はあなたのアプリケーションのニーズに依存します.
もう1つのinit処理指示を渡す方法は、zscriptファイルを作成することです.,では、ページ初期化フェーズでこのzscriptファイルを解析します.
ページ初期化フェーズが実行されると、デスクトップにページは追加されません.
 
(2)創件作成段階
ZKローダはZUMLページを解析し、コンポーネントを作成して初期化します.
a、各要素について、ZKローダはifとunless属性を検査し、trueであるかどうかを判断する.そうでなければ、この要素と彼のサブ要素は無視されます.
b、1つの集合についてforEach属性が指定されている場合、ZKは、集合の各集合項目について、以下のステップc~gを一度に実行する.
c、ZKローダは、要素名またはクラスで指定されたuse属性に基づいて、コンポーネントに参加します.
d、コンポーネントクラスのメンバーを順番に1人ずつ初期化し、ZUMLページで属性を指定する.
e,ZKローダは任意のネスト要素を解析し,プロセス全体を繰り返す.
f、コンポーネントがorgを実現する場合.zkoss.zk.ui.ext.AfterConposeインタフェースで、ローダはafterCompose()メソッドを呼び出します.
g、すべてのサブエレメントを作成した後、onCreateイベントが作成に送信され、アプリケーションは残りのエレメントコンテンツを初期化することができる.サブコンポーネントは、まずonCreateイベントをコミットします.
 
(3)イベント処理フェーズ
時間処理フェーズでは、zkはデスクトップキュー内の各イベントリスナーを一度に呼び出す.リスナーを呼び出すたびに独立したスレッドが使用されるため、他のイベントの処理に影響を与えることなく自動サスペンション運転が可能になります.
処理中に、イベントリスナーが別のイベントをトリガーする可能性があります.
 
(4)埋め戻し段階
すべてのイベントを処理した後、ZKはすべてのコンポーネントを規則的なHTMLページに日付付けし、ブラウザに送信します.コンポーネントを埋め戻すにはredraw()メソッドを呼び出す必要があります.
redraw()メソッドでは、コンポーネントの内容は変更されません.
 
4.2ページの更新
ZK非同期更新エンジンは、要求をパイプ形式でキューに追加し、デスクトップごとにキューを作成しません.したがって、同じデスクトップのリクエストは順番に処理され、異なるデスクトップリクエストは同時に処理されます.
 
(1)要求処理段階
ZK非同期更新エンジンは、要求された要求に従って関連するコンテンツを更新し、これらのコンポーネントがクライアントに表示されるコンテンツと一致するようにすることができる.その後、ZK非同期更新エンジンは関連イベントをキューにコミットする.
 
(2)イベント処理フェーズ
このフェーズとZUMLページをロードする時間処理フェーズは同じ方式を採用している.彼は一度にイベントを処理し、各イベントの処理に独立したスレッドを使用します.
 
(3)埋め戻し段階
すべてのイベントを処理した後、ZKは更新されたコンポーネントを転送し、対応するZK応答を生成し、これらの応答情報をクライアントに送信する.クライアントエンジンは、これらの応答情報に基づいてブラウザ内のDOMツリーを更新する.
 
4.3コンポーネントゴミ回収
ZKの各コンポーネントにはdestroy()またはclose()メソッドはありません.ページからコンポーネントをアンインストールした場合は、ブラウザからコンポーネントを削除する必要があります.1つのページにコンポーネントがアンインストールされると、アプリケーションに参照がない場合、ZKは管理を担当しません.コンポーネントに割り当てられたメモリは、Java仮想マシン(JVM)のゴミ収集器によって解放されます.
      
4.4コンポーネントの属性の使用
4.4.1コンポーネントid,if,unless
コンポーネントで一般的に使用されるプロパティはidであり、コンポーネントに一意の識別子を割り当てます.ifまたはunlessプロパティで関連文を作成して、コンポーネントを作成するかどうかを決定したり、forEachプロパティを使用して作成するコンポーネントの数を決定したりできます.また、useプロパティを使用してコンポーネントを別のJavaクラスに割り当てることもできます.これにより、元のデフォルトのJavaクラスを置き換えることができます.
ifプロパティとunlessプロパティはtrueまたはfalseを定義し、コンポーネントを作成するかどうかを判断します.コンポーネントに2つのプロパティが指定されている場合は、両方のプロパティがtrueの場合にのみ作成されます.
 
4.4.2コンポーネントのforEach属性
コンポーネントのforEachプロパティを使用して、どのコンポーネントを作成するかを決定します.コレクションオブジェクトにこのプロパティを指定すると、zkローダはコレクション内の各エントリにコンポーネントを作成します.
 
4.4.3コンポーネントuse属性
UI部分コードと制御処理コードを分離することで、メンテナンスの負担を軽減できます.一般的な2つの方法を分離しようとします.
制御コードを別のクラスに配置し、イベントリスナーを登録して会社のメソッドを呼び出します.
もう1つの方法は、デフォルトのコンポーネントクラスの代わりにuseプロパティを使用してクラスを指定することです.
<window use="MyWindow" />