SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

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

Javaで軽快に使える「軽量フレームワーク」特集
~小さなライブラリ1つで動くStripes Framework(2)

第18回

複数項目を選択可能な場合の処理

 <select>タグは、multiple属性を指定することで複数の項目を選択可能にできます。実際にやってみましょう。まず、JSPの<stripes:select>タグ部分を以下のように修正します。

<stripes:select name="sel" multiple="true">
  <stripes:options-collection collection="${optionmodel.options}"
    label="label" value="value" />
</stripes:select>

 ここでは、multiple="true"という属性を追記することで、複数項目の選択が可能なリストにしています。実際にやってみると分かりますが、このmultipleを用意するだけで、表示されるリストは自動的に(プルダウンメニューの形ではなく)一覧リストのような形状に変わります。複数項目を選択可能にした時点で表示項目数が調整されるのです。

 続いてActionBean側を修正しましょう。ここでは、選択された項目すべてを表示する処理を用意してみます。

package jp.codezine;

import java.util.*;

import net.sourceforge.stripes.action.*;

public class HeloActionBean implements ActionBean {
  private ActionBeanContext context;
  private String result;
  private String[] sel;
  
  public String[] getSel() { return sel; }
  public void setSel(String[] sel) { this.sel = sel; }

  ……略……
  
  @DefaultHandler
  public Resolution submit() {
    String result = "";
    for(String s : sel) result += s + " ";
    this.result = "あなたの入力した値:" + result;
    return new ForwardResolution("/helo.jsp");
  }
}
送信すると、選択した項目すべての値が表示される
送信すると、選択した項目すべての値が表示される

 ここでは、<stripes:select>の値を保管するプロパティは、String配列に変わっています。これで、選択した全項目が配列にまとめて保管されるようになるのです。後は、submitメソッドでこの配列から順に値を取り出し処理していくだけです。

ActionBeanの利用

 JSPのページ内から利用できると非常に助かるものにActionBeanがあります。ActionBeanはフォームを送信した際の処理などを行うのに用いられますが、フォームとは関係なく「サーバ側で用意した処理をJSP側で呼び出す」という場合に、ActionBeanをそのまま利用できれば非常に助かります。これは、次のようなタグを用意することで可能になります。

<stripes:useActionBean beanclass="クラス" var="変数名" />

 beanclassでActionBeanのクラスを指定し、varでインスタンスを保管する変数名を指定します。例えば、次のようにすれば、HeloActionBeanを「helo」という変数として利用できるようになります。

<stripes:useActionBean beanclass="jp.codezine.HeloActionBean" var="helo" />

 msgプロパティの値を出力したければ、${helo.msg}というように、普通のBeanと同じ感覚で記述できます。これもフォーム関係のタグとあわせて覚えておきたいタグでしょう。

Stripesのレイアウトについて

 続いて「ページのレイアウト」について考えてみましょう。JSPでは、<jsp:include>などを利用して他のページを読み込むことで、複数のJSPファイルを組み合わせてページを構成できます。Stripesでは、さらに強力なレイアウト用のタグが用意されています。それは次のようなものです。

  • <stripes:layout-definition>
  •  レイアウトの定義を記述するものです

  • <stripes:layout-render>
  •  特定のレイアウトを使用しページをレンダリングします

  • <stripes:layout-component>
  •  レイアウトに部品として組み込むコンポーネントを設定するものです

 Stripesでは、レイアウトを定義したJSPページを用意しておき、そのレイアウトをWebページ内からロードして使用できます。このとき、非常に大きな役割を果たすのがレイアウトコンポーネントです。Webページ内に<stripes:layout-component>を使ってコンポーネントを定義すると、レイアウト内に用意した<stripes:layout-component>タグにその内容が自動的にはめ込まれレンダリングされます。

次のページ
レイアウトの作成

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5250 2010/07/09 14:00

イベント

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

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

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

メールバックナンバー