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

MyMemoWiki

Struts2 単純なアプリケーションの作成 タグの利用

提供: MyMemoWiki
2020年2月15日 (土) 07:36時点におけるPiroto (トーク | 投稿記録)による版 (ページの作成:「==Struts2 単純なアプリケーションの作成 タグの利用== [Struts2] {{amazon|4839928444}} *参照 **http://struts.apache.org/2.x/docs/using-tags.html…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

Struts2 単純なアプリケーションの作成 タグの利用

[Struts2]


[Struts2 単純なアプリケーションの作成 Hello World Hello Worldアプリケーションの作成]では、簡単なメッセージをページに出力した。 「タグの利用」で、アプリケーションの他のアクションへのリンクを含むページを作成する。

Webアプリケーションは伝統的なウェブサイトとは、動的なレスポンスを生成できる点で異なる。ページからの動的データの参照を簡単にするために、フレームワークはタグセットを提供する。いくつかのタグは、値を与えることにより、標準のHTMLの模倣をする。その他は、標準ではないが有用である。

Strutsタグのひとつの使い方として、他のWebリソースへの特にローカルアプリケーションの他のリソースへのリンクを生成することがある。

リンクを張る

ウェブアプリケーションでは、通常、他のページへリンクを利用する。StrutsのWelcomeページに、他のアクションへのリンクを追加してみる。

 

<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>ようこそ</title>
  <link href="<s:url value="/css/usettag.css"/>" rel="stylesheet" type="text/css"/> 
</head>
<body>

メニュー

  • <a href="<s:url action="ShowRegisterWindow"/>">登録</a>
  • <a href="<s:url action="Login"/>">ログイン</a>
</body>
</html>
ロケールの変更にもリンクはよく利用される。ユーザのロケールを変更して、アプリケーションリソースからメッセージを表示させてみる。

 

言語

  • <s:url id="url" action="HelloWorld"> <s:param name="request_locale">ja</s:param> </s:url> <s:a href="%{url}">日本語</s:a>
  • <s:url id="url" action="HelloWorld"> <s:param name="request_locale">en</s:param> </s:url> <s:a href="%{url}">English</s:a>
どのように動くのか

{url}"は、s:url タグにより評価されたURLとなる。Welcome、HelloWorldページでは、2つの別のStrutsタグでリンクを生成している。

  • リソースリンク
  • ダイレクトリンク
  • パラメータつきリンク

リソースリンク

まずは、head 要素で、HTMLリンクタグにURLへの参照を埋め込むのにurlタグを利用している。

<link href="<s:url value="/css/tutorial.css"/>" 
  rel="stylesheet" type="text/css"/>

※ この参照は、絶対参照である。相対参照の解決を心配することなくページを移動できる。

ダイレクトリンク

上記の「メニュー」セクションで、アクションへの参照のために利用している。

  • <a href="<s:url action="ShowRegisterWindow"/>">登録</a>
  • リンクが描画されるとき、タグは自動的に適切な拡張を行うので、それらを自分で埋め込む必要はない。 必要に応じ、タグはJava セッション IDと共にリンクのURLエンコードも行為、リクエストをまたがって、Javaセッションが保たれる。

    パラメータつきリンク

    最後は、上図の「言語」セクションでは、urlタグを、param、a タグと共に使用して、リクエストパラメータを含むリンクを作成しています。

    <s:url id="url" action="Welcome">
      <s:param name="request_locale">en</s:param>
    </s:url>
    <s:a href="%{url}">English</s:a>
    

    param タグは、パラメータ "?request_locale=en" を Weclome Action URLに付加し、"url"という名前で保持します。 a タグは、"url"の参照を、ハイパーリンクにセットします。

    Any number of parameters can be added to the URI by adding more param etags.

    ワイルドカードマッピング

    Welcomeページが単なるリンクである場合、アクションクラスは必要ない。 しかしながら、それでもマッピングしたほうがよいのは、アクションURIを利用できるからである。 もし、ページにリンクせず、アクションにしかリンクしないなら、あとで簡単にアクションクラスを追加できる。

    <action name="Welcome">
      <result>/welcome.jsp</result>
    </action>
    

    アプリケーションを作るとき、しばしば直接ページにリンクを張ろうとする。 プロトタイピングを簡単に仕上げるため、Welcome エントリをワイルドカードマッピングに変更することができる。

    <action name="*">
      <result>/{1}.jsp</result>
    </action>
    

    データ入力フォーム

    たいていのアプリケーションはデータ入力フォームを利用する。Strutsタグを使えば入力フォームを簡単に作成できる。  

    <%@ taglib prefix="s" uri="/struts-tags" %>
    <%@ page pageEncoding="UTF-8"%>
    <%@ page contentType="text/html;charset=UTF-8"%>
    <html>
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>登録</title>
      <link href="<s:url value="/css/usettag.css"/>" rel="stylesheet" type="text/css"/> 
    </head>
    <body>
    

    登録

      <s:form action="Register">
        <s:textfield label="ユーザ名" name="userId" />
        <s:password label="パスワード" name="password" />
        <s:submit value="登録" />
      </s:form>
    </body>
    </html>
    
    どのように動くのか
    • JSPエンジンは、taglib のリファレンスをページの先頭から読み、Struts タグを プレフィックス "s"でこのページで利用するためにロードする。
    • Strutsタグ(テキストフィールド、パスワード、サブミット)はそれぞれ適切なラベルとコントロールタイプを発行する。

    覚えておくこと

    Webアプリケーションを記述する上で最も困難な箇所はページのコーディングだ。 フレームワークはページのコーディングをカスタムタグにより、簡単にする。 Struts タグは、フレームワークにより、動的なデータにアクセスできる。 タグは、ページ生成に必要な数多くのマークアップを削減する。

    タグ開発ガイド アクションメンバーへのアクセス、リクエスト属性等をページから取得 OGNL