Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 > オープンソース > Struts −4.htmlタグライブラリ
更新日:2006/6/3
Struts−4.htmlタグライブラリ
ここでは、Strutsで用意されているカスタムタグライブラリのうち、htmlタグライブラリについて解説します。htmlタグライブラリは<form>、<input>などHTMLタグと同様の動作をするタグを提供します。HTMLタグでも記述できますが、Strutsを使用する場合はなるべくカスタムタグライブラリを使うことが推奨されています。

実行環境
・WindowsXP Home Edition
・J2SDK 1.4.2_04
・Tomcat 5.0.18
・Struts 1.2.4
使用例
前ページで入力された値を次ページで表示するプログラムを作成します。値を入力するフォーム画面をhtmlタグライブラリを使用して作成します。
【作成ファイル一覧】
ファイル名
内容
値を入力するフォームをhtmlタグライブラリで作成します。
exHtml.jspで入力された値を表示します。
入力された値を保持するアクション・フォームBeanです。
アクション・クラスです。遷移先のファイルとして、exHtml2.jspを指定します。
Strutsプログラムの定義ファイルです。
【exHtml.jsp】htmlタグライブラリを使用して、値を入力するフォームを作成します。
<%@ page contentType="text/html; charset=Shift_JIS" %>
<%-- (1)htmlタグライブラリの指定 --%>
<%@ taglib uri="/tags/struts-html" prefix="html" %> <html:html> <head><title>htmlタグライブラリ</title></head> <body> htmlタグライブラリ サンプル1 <%-- (2)<html:form>タグの使用 --%>
<html:form action="/registration" focus="name"> <%-- (3)<html:text>タグの使用 --%>
<html:text property="name" size="16"/> <br><br> <%-- (4)<html:radio>タグの使用 --%> <html:radio property="address" value="tokyo"/>東京 <html:radio property="address" value="saitama"/>埼玉 <html:radio property="address" value="chiba"/>千葉 <html:radio property="address" value="kanagawa"/>神奈川 <br><br> <%-- (5)<html:multibox>タグの使用 --%> <html:multibox property="hobby" value="shop"/>買物 <html:multibox property="hobby" value="car"/>車 <html:multibox property="hobby" value="travel"/>旅行 <html:multibox property="hobby" value="sports"/>スポーツ <br><br> <%-- (6)<html:select>タグ、<html:option>タグの使用 --%> <html:select property="age"> <html:option value="10">0〜10</html:option> <html:option value="20">11〜20</html:option> <html:option value="30">21〜30</html:option> <html:option value="40">31〜40</html:option> </html:select> <br><br> <%-- (7)<html:textarea>タグの使用 --%> <html:textarea property="other" rows="10" cols="50"/> <%-- (8)<html:hidden>タグの使用 --%> <html:hidden property="id" value="12345" /> <br><br> <%-- (9)<html:submit>タグの使用 --%> <html:submit property="submit" value="送信"/> <%-- (10)<html:reset>タグの使用 --%> <html:reset value="リセット"/> </html:form> </body> </html:html>
(1). taglibディレクティブでhtmlタグライブラリを指定します。
(2). <html:form>タグを使用します。HTMLの<form>タグとほぼ同様の動作をします。action属性にはページの遷移先を指定します。遷移先の実ファイルはstruts-config.xmlで定義されています。focus属性にはページを開いたときに最初に選択可能になるフォーム項目を指定します。
(3). <html:text>タグを使用します。HTMLの<input type="text">タグとほぼ同様の動作をします。property属性はアクション・フォームBeanで使用するプロパティ名です。name属性で、該当するアクション・フォームBeanを指定します。省略した場合は、<html:form>タグの遷移先(/registration)に該当するアクション・フォームBeanが適用されます。
(4). <html:radio>タグを使用します。HTMLの<input type="radio">タグとほぼ同様の動作をします。value属性はプロパティ名に対するプロパティ値です。
(5). <html:multibox>タグを使用します。HTMLの<input type="checkbox">タグとほぼ同様の動作をします。
(6). <html:select>タグ、<html:option>タグを使用します。HTMLの<select>タグ、<option>タグとほぼ同様の動作をします。 <html:select>タグのproperty属性でアクション・フォームBeanのプロパティ名を指定し、<html:option>タグのvalue属性で選択された項目のプロパティ値を指定します。
(7). <html:textarea>タグを使用します。HTMLの<textarea>タグとほぼ同様の動作をします。
(8). <html:hidden>タグを使用します。HTMLの<input type="hidden">タグとほぼ同様の動作をします。
(9). <html:submit>タグを使用します。HTMLの<input type="submit">タグとほぼ同様の動作をします。
(10). <html:reset>タグを使用します。HTMLの<input type="reset">タグとほぼ同様の動作をします。
【exHtml2.jsp】exHtml.jspで入力した値を表示するプログラムです。
<%@ page contentType="text/html; charset=Shift_JIS" %>
<%-- (1)タグライブラリの指定 --%>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>

<html:html>
<head><title>htmlタグライブラリ2</title></head>
<body>

htmlタグライブラリ サンプル1
<br><br>
実行結果
<%-- (2)<bean:write>タグの使用 --%>
<bean:write name="RegistrationForm" property="name"
            scope="request" ignore="true" />
<bean:write name="RegistrationForm" property="address"
            scope="request" ignore="true" />
<logic:iterate id="element" name="RegistrationForm"
               property="hobby" scope="request">
  <bean:write name="element"/>
</logic:iterate>
<bean:write name="RegistrationForm" property="age"
            scope="request" ignore="true" />
<bean:write name="RegistrationForm" property="other"
            scope="request" ignore="true" />
<bean:write name="RegistrationForm" property="id"
            scope="request" ignore="true" />

</body>
</html:html>
(1). taglibディレクティブで使用するタグライブラリを指定します。
(2). <bean:write>タグを使用します。<bean:write>タグは指定したプロパティ名に合致するプロパティ値を表示します。name属性でアクションフォーム・Beanを指定します。property属性でアクションフォーム・Bean内の該当するプロパティ名を指定します。scope属性でプロパティ値のスコープを指定します。ignore属性をtrueにすると、プロパティ値が存在しない場合、<bean:write>タグは何の動作も行いません。
【RegistrationForm.java】exHtml.jspで入力した値を保存し、値を取得するメソッドを提供するアクション・フォームBeanを作成します。
package struts;

import org.apache.struts.action.*;

//(1)RegistrationFormクラスの宣言
public final class RegistrationForm extends ActionForm {

  //(2)プロパティ値を保持する変数の宣言
  private String name;
  private String address;
  private String[] hobby;
  private String age;
  private String other;
  private String id;

  //(3)プロパティ値のアクセスメソッドの宣言
  public void setName(String name) {this.name = name;}
  public String getName() {return name;}
  public void setAddress(String address) {this.address = address;}
  public String getAddress() {return address;}
  public void setHobby(String[] hobby) {this.hobby = hobby;}
  public String[] getHobby() {return hobby;}
  public void setAge(String age) {this.age = age;}
  public String getAge() {return age;}
  public void setOther(String other) {this.other = other;}
  public String getOther() {return other;}
  public void setId(String id) {this.id = id;}
  public String getId() {return id;}

}
(1). ActionFormクラスをスーパークラスとして、RegistrationFormクラスを宣言します。
(2). exHtml.jspで入力されたプロパティ値を保存する変数を宣言します。
(3). プロパティ値のアクセスメソッドを宣言します。setXxxメソッドでプロパティ値を保存します。getXxxメソッドでメソッドが呼ばれたとき、プロパティ値を返します。
【RegistrationAction.java】今回のアクション・クラスでは特に何の処理も行わず、exHtml2.jspを呼び出します。
package struts;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.ServletContext;
import org.apache.struts.action.*;

//(1)RegistrationActionクラスの宣言
public final class RegistrationAction extends Action {
  public ActionForward execute(ActionMapping mapping, 
         ActionForm form,
         HttpServletRequest req, 
         HttpServletResponse res) {

    //(2)exHtml2.jspの呼び出し
    return (mapping.findForward("success")); 
  }
}
(1). Actionクラスをスーパークラスとして、RegistrationActionクラスを宣言します。
(2). findForwardメソッドを使用して、exHtml2.jspを呼び出します。"success"とexHtml2.jspのマッピングはstruts-config.xmlに定義します。
【struts-config.xml】
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE struts-config PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
 "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>

  <!-- (1)アクション・フォームBeanの指定 -->
  <form-beans>
    <form-bean
     name="RegistrationForm"
     type="struts.RegistrationForm"/>
  </form-beans>

  <!-- (2)アクション・クラスの振る舞いを指定 -->
  <action-mappings>
    <action path="/registration"
     type="struts.RegistrationAction"
     name="RegistrationForm"
     scope="request">
      <!-- (3)アクション・クラス実行後の遷移先を指定 -->
      <forward name="success" path="/exHtml2.jsp"/>
    </action>
  </action-mappings>

</struts-config>
(1). <form-beans>タグでアクション・フォームBeanを指定します。
(2). <action-mappings>タグでアクション・クラス、関連するアクション・フォームBeanを指定します。
(3). <forward>タグでアクション・クラス実行後に返された値"success"に合致する遷移先(exHtml2.jsp)を指定します。
【実行結果】Strutsの実行方法に関してはJavaの道:Struts(基本操作)を参照してください。
Struts実行結果
Struts実行結果2
htmlタグライブラリ一覧
htmlタグライブラリで定義されているタグの一覧です。詳細な使用方法に関しては、以下のJakarta Projectのドキュメントをご参照ください。
Strutsドキュメント(htmlタグライブラリ):http://struts.apache.org/userGuide/struts-html.html
タグ
内容
base
HTMLの<base>タグとほぼ同様の動作をします。ページの基準となるURLを指定します。
button
HTMLの<input type="button">タグとほぼ同様の動作をします。
cancel
HTMLの<input type="cancel">タグとほぼ同様の動作をします。値は送信されますが、validateメソッドなどによる値の検証は行われません。
checkbox
HTMLの<input type="checkbox">タグとほぼ同様の動作をします。multiboxとの違いは、checkboxはチェックのON、OFFを取得する際に適しています。
errors
ActionErrorsオブジェクト、Stringオブジェクト、String配列の内容を表示します。
file
HTMLの<input type="file">タグとほぼ同様の動作をします。
form
HTMLの<form>タグとほぼ同様の動作をします。
frame
HTMLの<frame>タグとほぼ同様の動作をします。
html
HTMLの<html>タグとほぼ同様の動作をします。
image
HTMLの<input type="image">タグとほぼ同様の動作をします。
img
HTMLの<img>タグとほぼ同様の動作をします。
javascript
Validatorによる値の検証で、javascriptを使用する際に使用します。
link
HTMLの<a>タグとほぼ同様の動作をします。
messages
ActionMessagesオブジェクト、ActionErrorsオブジェクト、Stringオブジェクト、String配列の内容を表示します。
multibox
HTMLの<input type="checkbox">タグとほぼ同様の動作をします。checkboxとの違いは、multiboxはチェック項目の値に任意文字列を指定する場合、複数のチェック項目を指定する場合に適しています。
option
HTMLの<option>タグとほぼ同様の動作をします。options、optionsCollectionとの違いは、optionは単一の選択要素を指定する場合に使用します。
options
HTMLの<option>タグとほぼ同様の動作をします。optionとの違いは、optionsは動的に変化する複数の選択要素を指定する場合に使用します。optionsCollectionとの違いは、optionsはBean自体が複数の選択要素を持っている場合に使用します。
optionsCollection
HTMLの<option>タグとほぼ同様の動作をします。optionとの違いは、optionsCollectionは動的に変化する複数の選択要素を指定する場合に使用します。optionsとの違いは、optionsCollectionはBean内のプロパティが複数の選択要素を持っている場合に使用します。
password
HTMLの<input type="password">タグとほぼ同様の動作をします。
radio
HTMLの<input type="radio">タグとほぼ同様の動作をします。
reset
HTMLの<input type="reset">タグとほぼ同様の動作をします。
rewrite
HTMLの<a>タグとほぼ同様の動作をします。linkとの違いは、rewriteはjavascript内でのリンク先を記述する場合に使用します。
select
HTMLの<select>タグとほぼ同様の動作をします。
submit
HTMLの<input type="submit">タグとほぼ同様の動作をします。
text
HTMLの<input type="text">タグとほぼ同様の動作をします。
textarea
HTMLの<textarea>タグとほぼ同様の動作をします。
xhtml
XHTMLとしてHTMLタグを生成するときに使用します。



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道