==[[Struts2 単純なアプリケーションの作成 タグの利用]]==[[Struts2]]|
{{amazon|4839928444}}
**{{ref struts2_use_tag.lzh}}
----
[[Struts2 単純なアプリケーションの作成 Hello World Hello Worldアプリケーションの作成]]では、簡単なメッセージをページに出力した。「タグの利用」で、アプリケーションの他のアクションへのリンクを含むページを作成する。「タグの利用」で、アプリケーションの他のアクションへの[[リンク]]を含むページを作成する。
Webアプリケーションは伝統的なウェブサイトとは、動的なレスポンスを生成できる点で異なる。ページからの動的データの参照を簡単にするために、フレームワークはタグセットを提供する。いくつかのタグは、値を与えることにより、標準のHTMLの模倣をする。その他は、標準ではないが有用である。[[Webアプリケーション]]は伝統的なウェブサイトとは、動的なレスポンスを生成できる点で異なる。ページからの動的データの参照を簡単にするために、フレームワークはタグセットを提供する。いくつかのタグは、値を与えることにより、標準のHTMLの模倣をする。その他は、標準ではないが有用である。
Strutsタグのひとつの使い方として、他のWebリソースへの特にローカルアプリケーションの他のリソースへのリンクを生成することがある。[[Struts]]タグのひとつの使い方として、他のWebリソースへの特にローカルアプリケーションの他のリソースへのリンクを生成することがある。
===リンクを張る[[リンク]]を張る========ウェブアプリケーションでは、通常、他のページへリンクを利用する。StrutsのWelcomeページに、他のアクションへのリンクを追加してみる。ウェブアプリケーションでは、通常、他のページへリンクを利用する。[[Struts]]のWelcomeページに、他のアクションへのリンクを追加してみる。=====
[[File:1152_struts_tag_01.JPG]]
<%@ taglib prefix="s" uri="/struts-tags" %>
<h3>メニュー</h3>
<ul>
<li><a href="<s:url action="ShowRegisterWindowShow[[R]]egisterWindow"/>">登録</a></li>
<li><a href="<s:url action="Login"/>">ログイン</a></li>
</ul>
</body>
</html>
=====ロケールの変更にもリンクはよく利用される。ユーザのロケールを変更して、アプリケーションリソースからメッセージを表示させてみる。ロケールの変更にも[[リンク]]はよく利用される。ユーザのロケールを変更して、アプリケーションリソースからメッセージを表示させてみる。=====
[[File:1153_struts_tag_02.JPG]]
<h3>[[言語]]</h3>
<ul>
<li>
</ul>
=====どのように動くのか=====
<blockquote>{url}"は、s:url タグにより評価されたURLとなる。Welcome、HelloWorldページでは、2つの別のStrutsタグでリンクを生成している。タグにより評価されたURLとなる。Welcome、HelloWorldページでは、2つの別の[[Struts]]タグでリンクを生成している。</blockquote>
*リソースリンクリソース[[リンク]]*ダイレクトリンクダイレクト[[リンク]]*パラメータつきリンクパラメータつき[[リンク]]
====リソースリンクリソース[[リンク]]====まずは、head 要素で、HTMLリンクタグにURLへの参照を埋め込むのにurlタグを利用している。要素で、[[HTML]]リンクタグにURLへの参照を埋め込むのにurlタグを利用している。
<link href="<s:url value="/css/tutorial.css"/>"
※ この参照は、絶対参照である。相対参照の解決を心配することなくページを移動できる。
====ダイレクトリンクダイレクト[[リンク]]====
上記の「メニュー」セクションで、アクションへの参照のために利用している。
<li><a href="<s:url action="ShowRegisterWindowShow[[R]]egisterWindow"/>">登録</a></li>
リンクが描画されるとき、タグは自動的に適切な拡張を行うので、それらを自分で埋め込む必要はない。[[リンク]]が描画されるとき、タグは自動的に適切な拡張を行うので、それらを自分で埋め込む必要はない。必要に応じ、タグはJava 必要に応じ、タグは[[Java]] セッション IDと共にリンクのURLエンコードも行為、リクエストをまたがって、Javaセッションが保たれる。IDと共にリンクのURLエンコードも行為、リクエストをまたがって、[[Java]]セッションが保たれる。
====パラメータつきリンクパラメータつき[[リンク]]====
最後は、上図の「言語」セクションでは、urlタグを、param、a タグと共に使用して、リクエストパラメータを含むリンクを作成しています。タグと共に使用して、リクエストパラメータを含む[[リンク]]を作成しています。
<s:url id="url" action="Welcome">
<s:a href="%{url}">English</s:a>
param タグは、パラメータ "?request_locale=en" を Weclome Action URLに付加し、U[[R]]Lに付加し、"url"という名前で保持します。a タグは、"url"の参照を、ハイパーリンクにセットします。の参照を、ハイパー[[リンク]]にセットします。
Any number of parameters can be added to the URI U[[R]]I by adding more param etags.
====ワイルドカードマッピング====
Welcomeページが単なるリンクである場合、アクションクラスは必要ない。Welcomeページが単なる[[リンク]]である場合、アクションクラスは必要ない。しかしながら、それでもマッピングしたほうがよいのは、アクションURIを利用できるからである。しかしながら、それでもマッピングしたほうがよいのは、アクションU[[R]]Iを利用できるからである。もし、ページにリンクせず、アクションにしかリンクしないなら、あとで簡単にアクションクラスを追加できる。もし、ページに[[リンク]]せず、アクションにしか[[リンク]]しないなら、あとで簡単にアクションクラスを追加できる。
<action name="Welcome">
</action>
アプリケーションを作るとき、しばしば直接ページにリンクを張ろうとする。アプリケーションを作るとき、しばしば直接ページに[[リンク]]を張ろうとする。
プロトタイピングを簡単に仕上げるため、Welcome エントリをワイルドカードマッピングに変更することができる。
===データ入力フォーム===
たいていのアプリケーションはデータ入力フォームを利用する。Strutsタグを使えば入力フォームを簡単に作成できる。たいていのアプリケーションはデータ入力フォームを利用する。[[Struts]]タグを使えば入力フォームを簡単に作成できる。
[[File:1154_struts_tag_03.JPG]]
<%@ taglib prefix="s" uri="/struts-tags" %>
<body>
<h3>登録</h3>
<s:form action="Register[[R]]egister">
<s:textfield label="ユーザ名" name="userId" />
<s:password label="パスワード" name="password" />
</html>
=====どのように動くのか=====
*JSPエンジンは、taglib のリファレンスをページの先頭から読み、Struts のリファレンスをページの先頭から読み、[[Struts]] タグを プレフィックス "s"でこのページで利用するためにロードする。*Strutsタグ[[Struts]]タグ(テキストフィールド、パスワード、サブミット)はそれぞれ適切なラベルとコントロールタイプを発行する。
====覚えておくこと====
Webアプリケーションを記述する上で最も困難な箇所はページのコーディングだ。[[Webアプリケーション]]を記述する上で最も困難な箇所はページのコーディングだ。
フレームワークはページのコーディングをカスタムタグにより、簡単にする。
[[Struts ]] タグは、フレームワークにより、動的なデータにアクセスできる。
タグは、ページ生成に必要な数多くのマークアップを削減する。
[[http://struts.apache.org/2.x/docs/tag-developers-guide.html タグ開発ガイド]][[http://struts.apache.org/2.x/docs/ognl.html アクションメンバーへのアクセス、リクエスト属性等をページから取得 OGNL]]
{{amazon|193398807X}}