CodeZine(コードジン)

特集ページ一覧

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

第22回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2010/09/02 14:00

目次

セッションの利用

 常に接続を維持し、値などを保持し続けるのに、セッションは不可欠です。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」というものが用意されています。これらは、最低の高さと幅を示すものです。これにより、指定したサイズより小さくウインドウをリサイズできないようにします。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

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

もっと読む

著者プロフィール

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

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

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5