SHOEISHA iD

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

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

作りながら学ぶJavaアプリケーションフレームワーク

Struts 2入門(5)~Viewレイヤーの仕組み~

作りながら学ぶJavaアプリケーションフレームワーク (5)

  • X ポスト
  • このエントリーをはてなブックマークに追加

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のテンプレート機能を組み合わせて、コントロールを「テーマ」に従ってレンダリングすることができる機能です。

UIタグ一覧(ファームタグ)
タグ名 説明
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 文字列表示
UIタグ一覧(Form以外のUIタグ)
タグ名 説明
actionerror エラー表示用のメッセージ
actionmessage Actionオブジェクトのメッセージ表示
component テンプレート定義用
div HTMLのタグと同じ
fielderror 入力エラーを表示
UIタグ一覧(Ajaxタグ)
タグ名 説明
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を呼び出したりするものがあります。

次のページ
今回のサンプルコード

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
作りながら学ぶJavaアプリケーションフレームワーク連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

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

WINGSプロジェクト 高江 賢(タカエ ケン)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3565 2009/03/04 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング