80.参考: Spring MVCのJSPタグリファレンス

概要

Spring MVCのJSPタグについて見ていきます。
Spring MVCが用意するViewで使用できるタグは、FreeMarkerやVelocityなどでも使用できますが、
すべて使い方は同じなのでJSPタグのみを見ていきます。
 
 
 
 
 
 

Spring MVCのタグライブラリの基本

  タグライブラリの基本については、以下の記事を参照ください。
 
 
  ここではタグを1つずつ見ていきます。
  最初にモデルデータクラスを示してからタグを見ていく形をとります。
 
 
 

タグライブラリのリファレンス

Javaコード側のサンプル

  【モデルデータのサンプル】

public static class Form{
  @Valid
  private User user;
  private boolean isSmile = false;
  private String[] optionList = {"増量", "スープ", "オシャ僧"};
  private String[] optionValues;
  private Map<String, String> menuMap = new HashMap<String, String>();
  

  public Form() {
   menuMap.put("1", "カレー");
   menuMap.put("2", "うどん");
   menuMap.put("3", "肉まん");
  }
  
  public User getUser() {
   return user;
  }
 
  public void setUser(User user) {
   this.user = user;
  }
  
  public Map<String, String> getMenuMap() {
   return menuMap;
  }

  public String[] getOptionList() {
   return optionList;
  }
  public String[] getOptionValues() {
   return optionValues;
  }
  public void setOptionValues(String[] optionValues) {
   this.optionValues = optionValues;
  }
  public void setSmile(boolean isSmile) {
   this.isSmile = isSmile;
  }
  public boolean isSmile() {
   return isSmile;
  }
 }
 
  モデルデータは、実践ではstaticにするもの、DBから取得するものなどがあり、考慮が必要です。
  ここではJSPタグのサンプルのためだけに記述していますので、実践にそぐわない書き方をしていることにご注意ください。
 
 
  【補足】
   上記のうち、menuMapプロパティと、optionListプロパティは項目名のマップのようなものです。
 
 

form:inputタグ

  【イメージ例】
 
  【JSP記述例】

<form:input path="user.age"/>

 
  【説明】
    path属性にモデルデータのプロパティを記述すると、その値がtextボックスとして出力されます。
    Binderで設定した書式なども反映されます。
 
 

form:checkboxタグ

  【イメージ例】
 
  【JSP記述例】

<form:checkbox path="smile"/>スマイル(0円)<br>

 
  【説明】
    path属性にモデルデータのプロパティを記述すると、その値がcheckboxとして出力されます。
    モデルデータの定義を見ていいただくと分かりますが、プロパティの型はbooleanにします。
 
 

form:checkboxesタグ

  【イメージ例】
  【JSP記述例】

<form:checkboxes items="${form.optionList}" delimiter="<br>" path="optionValues"/><br>

 
  【説明】
    items属性にMapかList、配列を設定できます。上記の例では配列を指定しています。"増量"などの配列の文字列が表示名になります。
    pathにはモデルデータのプロパティ名を指定します。ブラウザからパラメタを受け取ると、チェックされた値が配列で設定されます。
    items属性にMapを指定した場合は、キーがcheckboxのvalueに使用されて、Mapの値が表示名になります。
    delimiter属性はitemsを出力するときの区切り文字を指定します。省略すると特に区切り文字は出力されません。
 
  【補足】
    以下の記述でも上記のイメージと同じ表示になります。

<form:checkbox path="optionValues" value="1"/>増量<br>
<form:checkbox path="optionValues" value="2"/>スープ<br>
<form:checkbox path="optionValues" value="3"/>オシャ僧<br>

 
  【補足2】
    checkboxesのような複数のコントロールを1つにまとめたタグは他にも存在しますが、特徴があります。
    以下のような自身のoptionValuesと無関係のhiddenタグを記述することです。

<input type="hidden" name="_optionValues" value="on"/>

    なぜこのようなタグを記述するかというと、WEBパラメタの特性に関係しています。
    例えば上記のチェックボックスで1つでもチェックすればoptionValues=1のようなパラメタが渡ってきます。
    しかし、チェックボックスが1つもチェックされていないとどうでしょうか?
    optionValuesパラメタ自体が渡ってこないので、「チェックがされなかったのか?」「そもそも画面にチェックボックスが表示されていなかったのか?」が
    分かりません。
    しかし、_optionValuesパラメタが渡ってくることで「チェックがされなかった!」と分かります。
    この場合は空の配列がformに設定されます。
    もしこの_optionValuesパラメタが渡ってこない場合はformのoptionValuesプロパティにはNULLが設定されることになります。
    いろいろ気を使ってくれていて、こういうところはかなり良いと思います。
 
 

form:radiobuttonタグ

  【イメージ例】
  【JSP記述例】

<form:radiobutton path="optionValues" value="1"/>増量<br>
<form:radiobutton path="optionValues" value="2"/>スープ<br>
<form:radiobutton path="optionValues" value="3"/>オシャ僧<br>

 
  【説明】
    path属性にモデルデータのプロパティを記述すると、その値がradioボタンとして出力されます。
 
 

form:radiobuttonsタグ

  【イメージ例】
  【JSP記述例】

<form:radiobuttons delimiter="<br>" items="${form.optionList}"  path="optionValues"/><br>

 
  【説明】
    path属性にモデルデータのプロパティを記述すると、その値がradioボタンとして出力されます。
    items属性には、Map、List、配列を指定できます。上記では配列を指定しています。
    内容はform:checkboxsタグと同じですので、そちらの説明をご覧ください。
 
 
 

form:selectタグ

  【イメージ例】
 
 
 
  【JSP記述例1】

<form:select items="${form.optionList}" path="optionValues"/><br>

   【JSP記述例2】

<form:select items="${form.menuMap}" path="optionValues"/><br>

 
  【説明】
    path属性にモデルデータのプロパティを記述すると、その値が選択された状態で、selectとして出力されます。
    items属性はform:checkboxsなどと同じですので、そちらの説明をご覧ください。
 
  【multiple属性について】

<form:select items="${form.optionList}" multiple="false" path="optionValues"/><br>

    multiple属性は複数選択可能なselectを出力するかを設定します。
    デフォルトはtrueです。
 
 
 

form:optionタグ/form:optionsタグ

  【イメージ例】
 
  【JSP記述例】

<form:select path="optionValues" multiple="false">
 <form:option value="-" label="--Please Select"/>
 <form:options items="${form.menuMap}" />
</form:select><br>

 
  【説明】
    form:optionタグなどを使用すると、上記のイメージのように自由に項目を追加できます。
 
 
 
 
 
 
 
 
 

サブページ リスト

 
 
 
 

 Created Date: 2012/04/17