ZK開発者ガイド

Version 2.4.1


目次

1. はじめに
従来のウェブアプリケーション
Ad-hoc AJAX アプリケーション
ZKとは?
ZKでないものとは?
ZKの制限
2. さあ、はじめましょう
Hello World!
対話
zscript
スクリプト言語
別ファイルの中のスクリプト
attribute 要素
EL 表記
id 属性
if unless 属性
forEach 属性
use 属性
zscriptでJavaクラスを作る
手動でコンポーネントを作る
ZUMLを使わずにZKアプリケーションを開発
特定のページに新しいコンポーネントを定義する
3. 基礎
構造
実行の流れ
コンポーネント、ページ と デスクトップ
コンポーネント
ページ
ページのタイトル
デスクトップ
createComponents メソッド
コンポーネントの森
コンポーネント:視覚表現とJavaオブジェクト
識別子
UUID
IDスペース
ネーム空間とIDスペース
zscriptの中で定義された変数とファンクション
zscriptとEL表記
多領域(マルチ・スコープ)インタプリタ
単領域インタプリタ
一ページの中にある複数のスクリプト言語
getVariablegetZScriptVariable
イベント
デスクトップとイベント処理
デスクトップとコンポーネントの作成
ZUMLとXMLネーム空間
4. コンポーネントのライフサイクル
ページの読み込みサイクル
ページ初期段階
コンポーネント作成段階
イベント処理段階
書き込み(Rendering)段階
ページ更新のライフサイクル
リクエスト処理段階
イベント処理段階
書き込み段階
モールド(Molds)
不要なコンポーネントの処理
5. イベントの監視・処理
マークアップ言語によるイベントリスナの追加
プログラムによるイベントリスナの追加・削除
メンバーを宣言する
動的にイベントリスナを追加と削除
可延イベントリスナ(通信のタイミングを遅らせるイベントリスナ)
動的にページにてイベントリスナを追加と削除
呼び出し順序
呼び出し順序を中止
イベントリスナからイベントを送信と生成
イベントを生成
イベントを送信
スレッドモデル
中断と再開
長時間処理
例:ワーキングスレッドが非同期ラベルを作成
方法1:タイマー(再開/中断なし)
方法2:ピギーバック(中断、再開、タイマーなし)
イベント処理スレッドを初期化とクリーンアップ
各イベントを処理する前に初期化
各イベントを処理した後にクリーンアップ
6. ZKユーザーマークアップ言語
XML
要素の良形式化
特別な記号は取り替えなければなりません
属性値は指定し引用しなければなりません
コメント
文字のエンコード
ネーム空間
スキーマで自動補完
条件付き処理
繰り返し
each 変数
forEachStatus 変数
イベントリスナ中のeachforEachStatus変数の使用方法
解決策: custom-attributes
ロードオンデマンド
fulfill属性によるロードオンデマンド
イベントリスナを使用したロードオンデマンド
暗黙オブジェクト
暗黙オブジェクト一覧
リクエストと実行についての情報
プロセス命令
page コマンド
component コマンド
マクロフォーマット
クラスフォーマット
init コマンド
variable-resolver コマンド
import コマンド
linkmeta コマンド
ZK 属性
use 属性
if 属性
unless 属性
forEach 属性
for EachBegin 属性
for EachEnd 属性
fulfill 属性
ZK 要素
zk 要素
一ページ内に多数のルート要素が存在したら
多種類のコンポーネントの繰り返し処理
zscript 要素
処理を遅らせる方法
異なったスクリプト言語を選択する方法
他のスクリプト言語を使用
attribute 要素
variables 要素
null
custom-attributes 要素
コンポーネントセットとXMLネーム空間
標準的なネーム空間
7. ZUMLとXULコンポーネントセット
ベーシックコンポーネント
ラベル
prehyphenmaxlengthmultiline プロパティ
ボタン
onClickイベントとhrefプロパティ
org.zkoss.zk.ui.ExecutionインターフェースのsendRedirectメソッド
ラジオとラジオグループ
レイアウト
イメージ
地域(言語)依存イメージ
イメージマップ
エリア
Shapeプロパティ
オーディオ
入力制御
typeプロパティ
format プロパティ
入力条件
Custom規制
onChangeイベント
onChangingイベント
カレンダー
valueプロパティとonChangeイベント
compactプロパティ
プログレスメーター
スライダー
タイマー
ページング
リストボックスとグリッドを使用したページング
ウィンドウズ
タイトルとキャプション
closableプロパティ
sizableプロパティ
onSizeイベント
スタイルクラス(sclass)
contentStyleプロパティ
スクロール可能なウィンドウ
ボーダー
オーバーラップ、ポップアップ、モーダル、ハイライト、埋め込み
埋め込み
オーバーラップ
ポップアップ
モーダル
ハイライト
モーダルウィンドウとイベントリスナ
positionプロパティ
コモンダイアログ
メッセージボックス
ファイルアップロードダイアログ
fileupload コンポーネント
ファイルダウンロードダイアログ
ボックスモデル
spacingプロパティ
widthheightsプロパティ
スプリッター
collapseプロパティ
Openプロパティ
onOpenイベント
タブボックス
多重タブボックス
アコーディオンタブボックス
orientプロパティ
closableプロパティ
タブパネルのロードオンデマンド
グリッド
スクロール可能なグリッド
サイズ変更可能な行
onColSizeイベント
ページングとグリッド
pageSizeプロパティ
paginalプロパティ
pagingプロパティ
onPagingイベントとメソッド
並び替え
sortDirectionプロパティ
onSortイベント
sortメソッド
ライブデータ
ライブデータを使用したソート
特別なプロパティ
spansプロパティ
セパレータとスペース
グループボックス
contentStyleプロパティとスクロール可能なグループボックス
ツールバー
メニューバー
メニューコマンドの実行
チェックボックスとしてのメニュー項目の使用
autodropプロパティ
onOpenイベント
その他のメニュー機能
コンテキストメニュー
カスタマイズ可能なTooltipとポップアップメニュー
onOpenイベント
リストボックス
多数行のリストボックス
行のヘッダー
行のフッター
ドロップダウンリスト
複数選択
スクロール可能なリストボックス
rowsプロパティ
サイズ変更可能なリストヘッダー
ページングを伴ったリストボックス
ソーティング
sortAscendingsortDescendingプロパティ
sortDirectionプロパティ
onSortイベント
sortメソッド
特別なプロパティ
checkmarkプロパティ
vflexプロパティ
maxlengthプロパティ
ライブデータ
ライブデータを使用したソーティング
ボタンを含むリストボックス
ツリーコントロール
OpenプロパティとonOpenイベント
複数選択
ページング
onPagingonPageSizeイベント
特別なプロパティ
rowsプロパティ
checkmarkプロパティ
vflexプロパティ
maxlengthプロパティ
サイズ変更可能な行
ツリーコントロールへのCreate-on-Open
コンボボックス
autodropプロパティ
descriptionプロパティ
onOpenイベント
onChangingイベント
バンドボックス
closeDropdownメソッド
autodropプロパティ
onOpenイベント
onChangingイベント
チャート
ライブデータ
ドリルダウン(onClickイベント)
エリア処理
ドラッグ&ドロップ
draggabledroppableプロパティ
onDropイベント
複数選択のドラッグ
多種のドラッグ可能なコンポーネント
HTML関連コンポーネント
htmlコンポーネント
inlineコンポーネント
HTMLとXULコンポーネントの混合
Includeコンポーネント
ZUMLページを含む
styleコンポーネント
scriptコンポーネント
iframeコンポーネント
HTMLフォームとJavaサーブレットの使用
nameプロパティ
nameプロパティをサポートするコンポーネント
リッチユーザーインターフェース
クライアント側の動作
コンポーネントの参照
onfocusonblurの例
強制的なルール
onshowonhide動作
ウィンドウの表示方法を変更する例。
CSA JavaScript ユーティリティ
actionオブジェクト
animaオブジェクト
イベント
マウスイベント
Keystroke イベント
ctrlKeysプロパティ
入力イベント
リストとツリーイベント
スライダーとスクロールイベント
他のイベント
radioradiogroup イベントの流れ
8. ZUMLとXHTMLコンポーネントセット
目的
XHTMLページは有効なZUMLページ
サーバー中心構造の対話能力
サーブレットはそのまま
相違
UUIDはIDです
副作用
すべてのタグは有効
大文字・小文字を区別せず
モールドはサポートされません
ブラウザでのDOMツリー
TABLETBODYタグ
イベント
JSF、JSP、その他を組み込む
既存のサーブレットを使用
挿入で豊富にする
静的なHTMLページを豊富にする
ZK JSPタグの使用
ZKフィルターを使用して動的に生成したページを豊富にする
XUL?それともXHTML?
9. マクロコンポーネント
マクロコンポーネントを使用する三つのステップ
ステップ1.実装
ステップ2.宣言
その他のプロパティ
ステップ3.使用
pass プロパティ
arg.includer
インラインマクロ
レギュラー(標準)マクロ
マクロコンポーネントとIDスペース
外部から子コンポーネントと通信
親で定義された変数に通信
ランタイムでmacro-uriを変更
メソッドを使う
Javaで追加のメソッドを提供
zscriptで追加メソッドを提供
インストール中に実装クラスをオーバーライド
手動でマクロコンポーネントを作成
10. 上級者のための機能
ページ認識
コンポーネント認識
コンポーネントパス
並び替え(ソート)
ブラウザの情報とコントロール
onClientInfoイベント
org.zkoss.ui.util.Clients クラス
ウィンドウを閉じさせないようにする
ブラウザの履歴管理
適切な状態をブラウザの履歴へ付き加え
onBookmarkChangedイベントの監視とデスクトップの処理
簡単な例
コンポーネント複製
コンポーネントの直列化
直列化可能なセッション
直列化リスナ
ページ間における通信
イベントをポストする、または送信する
属性
ウェブアプリ間における通信
クラスパスから取得するウェブリソース
アノテーション
ZUMLページに注釈をつける(アノテート)
コンポーネントの宣言に注釈をつける従来の方法
プロパティ宣言に注釈をつける従来の方法
プロパティ宣言に注釈をつける簡単な方法
コンポーネント宣言に注釈をつける簡単な方法
手動で作成されたコンポーネントに注釈をつける
アノテーションを取得
リッチレット
org.zkoss.zk.ui.Richletインターフェースの実装
URLごとのリッチレット
web.xmlzk.xmlを設定
セッションタイムアウト管理
エラー処理
ページ読み込み中のエラー処理
ZK Mobileのエラー処理
ページ更新中のエラー処理
ページ更新中のZKモバイルのエラー
パフォーマンス改善のためのヒント
コンパイルしたJavaコードを使用
サーブレットスレッドを使用してイベントを処理
モーダルウィンドウ
メッセージボックス
ファイルアップロード
ファイルが変更されたかどうかを調べるため期間を延長
子コンポーネントの作成を遅らせる
巨大なリストボックスにおけるライブデータとページングの使用
モーダルウィンドウを開くのに時間がかかる
XHTML コンポーネントの代わりにhtmlまたはinlineを使用
ZKフィルターの代わりにZK JSP タグを使用
その他
ZKローダーが出力を圧縮しないように設定
11. 国際化
ロケール
px_preferred_localセッション属性
リクエストインターセプター
タイムゾーン
px_preferred_time_zoneセッション属性
リクエストインターセプター
ラベル
ロケール依存ファイル
ブラウザとロケール依存URI
Javaでブラウザとロケール依存するリソース
メッセージ
中国語文字とより大きなフォント
12.データベースとの接続
ZKはプレゼンテーション層
JDBCを使用する最も簡単な方法(しかし、推奨しません)
コネクションプーリングを使用
接続とコネクションを閉じること
コネクションプーリングの設定
Tomcat 5.5 + MySQL
JBoss + MySQL
JBoss + PostgreSQL
データベースアクセスに使用可能なZKの機能
org.zkoss.zk.ui.event.EventThreadCleanupインターフェース
EL表記でデータベースにアクセス
すべてを読み、リンクリストへコピーする
org.zkoss.zk.ui.util.Initiatorインターフェースを実装
トランザクションとorg.zkoss.zk.util.Initiator
J2EEトランザクションとイニシエーター
ウェブコンテナーとイニシエーター
13. ポータルとの統合
設定
WEB-INF/portlet.xml
WEB-INF/web.xml
使用方法
zk_pagezk_richletパラメーターと属性
14. ZKの延長
ロガー
ZKにてログレベルを設定する方法
i3-log.confの中身
許可レベル
i3-log.confの位置
すべてのログを使用不可にする
DSP
init-param
iDOM