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