Struts Tag
最終的にHTMLを表示するViewレイヤーでは、Action
クラスのデータやセッションで保持する情報にアクセスすることが不可欠です。Struts 2では、カスタムタグ(Struts Tag)を用いて、そのようなデータを扱うことになります。
またStruts Tagには、それ以外にも、フォームなどのユーザーインターフェイスのタグ(UIタグ)や、条件判定を行うタグ、さらにはJavaScriptが組み込まれたAjax機能のタグもあります。
3つのテンプレートエンジン
Struts 2では、JSPに加え、「freemarker」や「velocity」といった3つのテンプレートエンジンに対応しており、Struts Tagも3つのテンプレートで使用することができます。Struts Tagは、基本的にViewの実装とは切り離されており、テンプレートの文法によって若干書式が異なるだけで、同じように使えます。
なお、JSPの標準的なカスタムタグであるJSTLもサポートしていますが、EL式には対応していません。そのため、EL式固有の表記を使用することはできませんので、OGNL式で記述する必要があります。
以下、Struts Tagsを表にまとめています。タグの個別の詳細については、Struts 2のドキュメントを参照してください。
UIタグ
UIタグは、その名の通りユーザーがデータを操作するタグで、checkboxやselectといった通常のHTMLタグを拡張したものが中心です。UIタグの特徴的な機能の一つに、連載第2回目の記事でもふれた「テーマ」機能があります。FreeMarkerのテンプレート機能を組み合わせて、コントロールを「テーマ」に従ってレンダリングすることができる機能です。
タグ名 | 説明 |
checkbox | <input type="checkbox">と同じ |
combobox | コンボボックス(テキストボックス+プルダウンメニュー) |
form | HTMLタグと同じ |
hidden | <input type="hidden">と同じ |
password | <input type="password"> と同じ |
select | HTMLタグと同じ |
textarea | HTMLタグと同じ |
radio | <input type="radio">と同じ |
reset | <input type="reset">と同じ |
submit | <input type="submit">と同じ |
textfield | <input type="text">と同じ |
head | HEADタグ内でthemeの指定などを行う時に使用 |
optiontransferselect | 2つのセレクトボックスで連携処理を行う |
optgroup | セレクトボックスのグループ分け表示 |
token | Submitのダブルクリック防止用 |
updownselect | セレクトボックスの要素を上下移動させる |
doubleselect | 連携動作する2つのセレクトボックス |
file | ファイルアップロード用 |
checkboxlist | 複数のチェックボックスを作成 |
label | 文字列表示 |
タグ名 | 説明 |
actionerror | エラー表示用のメッセージ |
actionmessage | Actionオブジェクトのメッセージ表示 |
component | テンプレート定義用 |
div | HTMLのタグと同じ |
fielderror | 入力エラーを表示 |
タグ名 | 説明 |
a | XMLHttpRequestを呼び出す |
autocompleter | 入力補完機能 |
bind | イベント待ち処理 |
datetimepicker | カレンダーを表示した日付選択 |
div | XMLHttpRequestを呼び出す |
tree | ツリー構造の表示 |
treenode | |
tabbedpanel | タブ形式のページ表示 |
ただ、標準のxhtmlテーマは、コントロールをTable
タグで配備したりするので、昨今のWebレイアウトには合わない部分も少なくないでしょう。テンプレートを自作したりして、テーマをカスタマイズすることはできますが、テンプレートの変更は面倒な場合が多くて不便です。もう一つの方法として、Tilesプラグインの利用を検討した方がよいかもしれません。「Tiles」とは、複数のJSPファイルを1枚のWebページに合成する機能です。Webページのヘッダーやフッターなど、共通して使う部分を独立して定義することができます。
その他UIタグには、Ajax
タグなど便利そうなものもありますが、かゆいところに手が届かないものも多く、状況に応じて利用することが肝要です。
汎用タグ
汎用タグは、Struts 2のドキュメントの分類では、制御タグとデータタグに分かれています。
タグ名 | 説明 |
if | 条件判定を行う |
elseIf | |
else | |
append | 複数の要素リストを連結する |
generator | iteratorタグで処理できる要素を生成する |
iterator | 要素リストから、ひとつずつ要素を取り出す |
merge | 複数の要素リストを合成する |
sort | 要素をソートする |
subset | 要素リストの一部分を切り出す |
タグ名 | 説明 |
a | HTMLのタグと同じ |
action | Actionを呼び出す |
bean | JavaBeansの生成 |
date | 日付表示 |
debug | Value Stack(内部データ)の表示 |
i18n | メッセージリソースの変換 |
include | JSPファイルなどの呼び出し |
param | struts.xmlの<param>タグを読み出す |
property | オブジェクトのプロパティを参照する |
push | Value Stack(内部データ)にデータを格納 |
set | 変数に値をセットする |
text | 国際化に対応した文字列表示 |
url | URLの生成 |
制御タグは、結果として返すHTMLにはまったく現れないタグです。条件判定を行ったり、内部のデータを操作するものです。
データタグには、変数の表示など何らかの結果をレスポンスのHTMLで利用するもの、Actionを呼び出したりするものがあります。