Struts 2講義12


Struts 2ラベルの使用原理の疑いを解く
筆者がダウンロードしたStruts 2のパッケージでは、読者は/libの下でstruts 2-core-2.0.11.1を見つけることができる.JArパッケージ、そのルートディレクトリの下の/META-INFフォルダの下に「struts-tags.tld」という名前のファイルが表示されます.このファイルは、Struts 2に含まれるすべてのラベルライブラリ定義です.このセクションでは、Struts 2の内部でこれらのラベルがどのように使用されているかを読者に知らせるために、このファイルコードについて説明します.JSPでラベルコードを書く方法を簡単に説明します.
技術的要点
このセクションでは、Struts 2の内部定義ラベルのフォーマットとJSPでの使用方法について説明します.
 struts-tags.tldファイルラベル定義構成フォーマット.
JSPで使用するラベル機能の紹介.
デモコード
<!------------------   : struts-tags.tld----------------->
<taglib>
  <tlib-version>2.2.3</tlib-version>
  <jsp-version>1.2</jsp-version>
  <short-name>s</short-name>
  <uri>/struts-tags</uri>
  <display-name>"Struts Tags"</display-name>
  <description>………………</description>
  <tag>
    <name>action</name>
    <tag-class>org.apache.struts2.views.jsp.ActionTag</tag-class>
    <body-content>JSP</body-content>
    <description><![CDATA[Execute an action from within a view]]></description>
    <attribute>
      <name>executeResult</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
      <description><![CDATA[Whether the result of this action (probably a view) should be executed/rendered]]></description>
    </attribute>
   …………………………
    <attribute>
      <name>namespace</name>
      <required>false</required>
      <rtexprvalue>false</rtexprvalue>
      <description><![CDATA[Namespace for action to call]]></description>
    </attribute>
  </tag>
</taglib>

コード解釈
(1)struts-tags.tldはStruts 2のラベル定義ファイルです.すべてのラベル定義は、との間で定義されます.特定のラベルをで定義します.各ラベルには独自の属性がたくさんあるからです.これらのプロパティ定義は、で定義されます.
(2)間で定義されるのは、ラベルライブラリのバージョンです.は、これらのラベルがJSPをサポートするバージョンであるラベルライブラリを定義します.はラベルライブラリのデフォルト名であり、ニックネームとしても考えられます.はラベルライブラリのURIを定義し、JSPで使用されます.は表示名です.は、ラベルライブラリの記述、ラベルライブラリの使用用途などを記述する.
(3)は属性名定義です.は、この属性が必須であるか否かを表し、必要であれば間はtrueであり、そうでなければfalseである.は式の使用可否を表し、ほとんどのラベルはfalseです.ここでは式を使用できないわけではありませんが、正反対に式を使用できることを示します.定義は前述と同じです.
(4)JSPでは,前章のプレゼンテーションコードに示すように,ファイルヘッダにラベルを用いた宣言があり,コードは以下の通りである.
<!---------------------   : *.jsp------------------------->
<%@taglib prefix="s" uri="/struts-tags"%>

この宣言があれば、JSPファイルでStruts 2のラベルを使用できます.たとえばformタグ定義は、次のコードのようにします.
<s:form action="upload" ………>

必ず「s」を使うことを覚えておいてください.それはStruts 2のラベルのデフォルト名でもニックネームに相当します.もちろん読者も自分が取りたい名前に変えることができますが、ラベル声明の「prefix」では自分が取った名前に変更します.
注意:筆者が使用するサーブレットバージョンは2.3以上のバージョンであるため、webにある必要はない.xmlでラベルライブラリを定義します.読者が使用するサーブレットバージョンが比較的低い場合は、web.xmlファイルでは、次のコードを定義する必要があります.
<!----------------------   :web.xml----------------------->
<taglib>
	<!-   URI - ->
	<taglib-uri>/Struts 2-tags</taglib-uri>
<!-         jar   - ->
	<taglib-location>/WEB-INF/lib/struts2-core-2.0.11.1.jar</taglib-location>
</taglib>

このようにラベルライブラリは、サーブレットバージョンが比較的低い場合にのみ効果的に使用されます.