SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Javaで軽快に使える「軽量フレームワーク」特集

Javaで軽快に使える「軽量フレームワーク」特集
~クールなGUIをシンプルなスクリプトで作成するZK(3)

第22回

  • X ポスト
  • このエントリーをはてなブックマークに追加

セッションの利用

 常に接続を維持し、値などを保持し続けるのに、セッションは不可欠です。ZKでも、もちろんセッションを利用できます。簡単なサンプルを挙げておきましょう。

<?page title="Index Page"?>
<window title="Welcome to ZK!" border="normal" width="300px">
  <zscript>
  var gmsg = session.getAttribute("msg");
  void doAction(){
    String s = text1.value;
    session.setAttribute("msg",s);
    alert("「" + s + "」をセッションに保存しました。");
  }
  </zscript>
  <label>セッション:${gmsg}</label>
  <separator/>
  <textbox id="text1" />
  <separator/>
  <button label="click" onClick="doAction()" />
</window>
テキストを入力してボタンを押すと、その値がセッションに保管される
テキストを入力してボタンを押すと、その値がセッションに保管される

 入力フィールドにテキストを書き、[save]ボタンを押すと、そのテキストがセッションに保管されます。以後、ページをリロードすると保存した値が表示されるようになります。ここでは、sessionオブジェクトの「setAttribute」「getAttribute」というメソッドを利用してセッションへの値のやり取りを行っています。このsessionは、JSPの暗黙オブジェクトと同様、HttpSessionのインスタンスです。しかし、JSPの暗黙オブジェクトがそのまま使えるわけではありません。例えば、sessionやapplicationなどは使えますが、requestやresponse、outといったもっとも重要なものは使えません。

 applicationやsessionについては、ZKのシステムに何ら影響を与えるものではありませんが、requestやresponseなどは「クライアント側とサーバ側を分離しない」というZKのシステムからすれば、使えることができてはまずいものです。outによる出力も、プレゼンテーション層を管理するためのZKというフレームワークからすれば利用できない方がいいものなので、用意されていないのでしょう。

 従って、これらは「JSPの暗黙オブジェクトが使える」というより、「ZKが独自に、必要最低限の暗黙オブジェクトを用意してある」と考えた方が良いでしょう。実際、ZKには、JSPにはなかった暗黙オブジェクトが多数揃えられています。現在のイベントを示すeventや、forEachによる繰り返しで用いられるeach、コンポーネント自身を示すselfなども暗黙オブジェクトです。

内部ウインドウの作成

 ZKでは、ウインドウを擬似的にWebページ内に配置できました。さらに機能を用意して、パソコンのデスクトップのような表現も可能です。ZKでは、メニューバー、ダイナミックなコンポーネント(ウインドウ)の生成、ウインドウ操作時のイベント処理など、基本的な機能は揃っているので、ちょっとコードを書けば、擬似デスクトップを作りマルチウインドウなGUIを構築することもできます。

 実際に簡単なサンプルを作ってみましょう。まず、ページ内に内部ウインドウとして表示させるzulファイルを作成します。ここでは「other.zul」という名前で、Webアプリケーションのルート(index.zulと同じ階層)に配置しておくことにします。ソースコードはざっと次のようにしておきましょう。

※other.zul
<window title="ウインドウ" border="normal"
    height="100px" width="300px"
    minheight="100" minwidth="100">
  <zscript>
  void doAction(){
    alert("ok");
  }
  </zscript>
  <label>※ウインドウ</label>
  <separator/>
  <button label="click" onClick="doAction()" />
</window>
内部ウインドウ用に用意したzulファイル。このウインドウが、ブラウザ内にマルチウインドウで現れる
内部ウインドウ用に用意したzulファイル。このウインドウが、ブラウザ内にマルチウインドウで現れる

 ここでは、<window>タグ内にラベルとボタンを用意してあります。ボタンをクリックすると、簡単なメッセージが表示されるようにしてあります。これは「内部ウインドウ内できちんとスクリプトが機能するか」を確認するためのものなので、内容は適当に変えて構いません。

 それよりも重要なのは、<window>タグに用意されている属性です。ここではheight/widthの他に「minheight」「minwidth」というものが用意されています。これらは、最低の高さと幅を示すものです。これにより、指定したサイズより小さくウインドウをリサイズできないようにします。

次のページ
メニューバーとマルチウインドウ処理

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Javaで軽快に使える「軽量フレームワーク」特集連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5364 2010/09/02 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング