| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
編集の要約なし
==Struts2 単純なアプリケーションの作成 タグの利用==
[[Struts2]]
{{amazon|4839928444}}
**{{ref struts2_use_tag.lzh}}
----
[[Struts2 単純なアプリケーションの作成 Hello World Hello Worldアプリケーションの作成]]では、簡単なメッセージをページに出力した。
「タグの利用」で、アプリケーションの他のアクションへのリンクを含むページを作成する。
=====ウェブアプリケーションでは、通常、他のページへリンクを利用する。StrutsのWelcomeページに、他のアクションへのリンクを追加してみる。=====
[[File:1152_struts_tag_01.JPG]]
<&lt;%@ taglib prefix="s" uri="/struts-tags" %>&gt; <&lt;%@ page pageEncoding="UTF-8"%>&gt; <&lt;%@ page contentType="text/html;charset=UTF-8"%>&gt; <&lt;html>&gt; <&lt;head>&gt; <&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8">&gt; <&lt;title>&gt;ようこそ<&lt;/title>&gt; <&lt;link href="<&lt;s:url value="/css/usettag.css"/>&gt;" rel="stylesheet" type="text/css"/> &gt; <&lt;/head>&gt; <&lt;body>&gt; <&lt;h3>&gt;メニュー<&lt;/h3>&gt; <&lt;ul>&gt; <&lt;li><&gt;&lt;a href="<&lt;s:url action="ShowRegisterWindow"/>&gt;">&gt;登録<&lt;/a><&gt;&lt;/li>&gt; <&lt;li><&gt;&lt;a href="<&lt;s:url action="Login"/>&gt;">&gt;ログイン<&lt;/a><&gt;&lt;/li>&gt; <&lt;/ul>&gt; <&lt;/body>&gt; <&lt;/html>&gt;
=====ロケールの変更にもリンクはよく利用される。ユーザのロケールを変更して、アプリケーションリソースからメッセージを表示させてみる。=====
[[File:1153_struts_tag_02.JPG]]
<&lt;h3>&gt;言語<&lt;/h3>&gt; <&lt;ul>&gt; <&lt;li>&gt; <&lt;s:url id="url" action="HelloWorld">&gt; <&lt;s:param name="request_locale">&gt;ja<&lt;/s:param>&gt; <&lt;/s:url>&gt; <&lt;s:a href="%{url}">&gt;日本語<&lt;/s:a>&gt; <&lt;/li>&gt; <&lt;li>&gt; <&lt;s:url id="url" action="HelloWorld">&gt; <&lt;s:param name="request_locale">&gt;en<&lt;/s:param>&gt; <&lt;/s:url>&gt; <&lt;s:a href="%{url}">&gt;English<&lt;/s:a>&gt; <&lt;/li>&gt; <&lt;/ul>&gt;
=====どのように動くのか=====
<&lt;blockquote>&gt;{url}"は、s:url タグにより評価されたURLとなる。Welcome、HelloWorldページでは、2つの別のStrutsタグでリンクを生成している。<&lt;/blockquote>&gt;
*リソースリンク
まずは、head 要素で、HTMLリンクタグにURLへの参照を埋め込むのにurlタグを利用している。
<&lt;link href="<&lt;s:url value="/css/tutorial.css"/>&gt;" rel="stylesheet" type="text/css"/>&gt;
※ この参照は、絶対参照である。相対参照の解決を心配することなくページを移動できる。
上記の「メニュー」セクションで、アクションへの参照のために利用している。
<&lt;li><&gt;&lt;a href="<&lt;s:url action="ShowRegisterWindow"/>&gt;">&gt;登録<&lt;/a><&gt;&lt;/li>&gt;
リンクが描画されるとき、タグは自動的に適切な拡張を行うので、それらを自分で埋め込む必要はない。
最後は、上図の「言語」セクションでは、urlタグを、param、a タグと共に使用して、リクエストパラメータを含むリンクを作成しています。
<&lt;s:url id="url" action="Welcome">&gt; <&lt;s:param name="request_locale">&gt;en<&lt;/s:param>&gt; <&lt;/s:url>&gt; <&lt;s:a href="%{url}">&gt;English<&lt;/s:a>&gt;
param タグは、パラメータ "?request_locale=en" を Weclome Action URLに付加し、"url"という名前で保持します。
もし、ページにリンクせず、アクションにしかリンクしないなら、あとで簡単にアクションクラスを追加できる。
<&lt;action name="Welcome">&gt; <&lt;result>&gt;/welcome.jsp<&lt;/result>&gt; <&lt;/action>&gt;
アプリケーションを作るとき、しばしば直接ページにリンクを張ろうとする。
プロトタイピングを簡単に仕上げるため、Welcome エントリをワイルドカードマッピングに変更することができる。
<&lt;action name="*">&gt; <&lt;result>&gt;/{1}.jsp<&lt;/result>&gt; <&lt;/action>&gt;
===データ入力フォーム===
たいていのアプリケーションはデータ入力フォームを利用する。Strutsタグを使えば入力フォームを簡単に作成できる。
[[File:1154_struts_tag_03.JPG]]
<&lt;%@ taglib prefix="s" uri="/struts-tags" %>&gt; <&lt;%@ page pageEncoding="UTF-8"%>&gt; <&lt;%@ page contentType="text/html;charset=UTF-8"%>&gt; <&lt;html>&gt; <&lt;head>&gt; <&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8">&gt; <&lt;title>&gt;登録<&lt;/title>&gt; <&lt;link href="<&lt;s:url value="/css/usettag.css"/>&gt;" rel="stylesheet" type="text/css"/> &gt; <&lt;/head>&gt; <&lt;body>&gt; <&lt;h3>&gt;登録<&lt;/h3>&gt; <&lt;s:form action="Register">&gt; <&lt;s:textfield label="ユーザ名" name="userId" />&gt; <&lt;s:password label="パスワード" name="password" />&gt; <&lt;s:submit value="登録" />&gt; <&lt;/s:form>&gt; <&lt;/body>&gt; <&lt;/html>&gt;
=====どのように動くのか=====
*JSPエンジンは、taglib のリファレンスをページの先頭から読み、Struts タグを プレフィックス "s"でこのページで利用するためにロードする。
タグは、ページ生成に必要な数多くのマークアップを削減する。
[[http://struts.apache.org/2.x/docs/tag-developers-guide.html タグ開発ガイド]][[http://struts.apache.org/2.x/docs/ognl.html アクションメンバーへのアクセス、リクエスト属性等をページから取得 OGNL]]
{{amazon|193398807X}}

案内メニュー