Javaに関する様々な情報をご紹介します。

4htmlタグライブラリ

Javaに関する様々な情報をご紹介します。

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タグライブラリを使用して作成します。

作成ファイル一覧

ファイル名 内容
exHtml.jsp 値を入力するフォームをhtmlタグライブラリで作成します。
exHtml2.jsp exHtml.jspで入力された値を表示します。
RegistrationForm.java 入力された値を保持するアクション・フォームBeanです。
RegistrationAction.java アクション・クラスです。遷移先のファイルとして、exHtml2.jspを指定します。
struts-config.xml 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. (1)taglibディレクティブでhtmlタグライブラリを指定します。
  2. (2)<html:form>タグを使用します。HTMLの<form>タグとほぼ同様の動作をします。action属性にはページの遷移先を指定します。遷移先の実ファイルはstruts-config.xmlで定義されています。focus属性にはページを開いたときに最初に選択可能になるフォーム項目を指定します。
  3. (3)<html:text>タグを使用します。HTMLの<input type="text">タグとほぼ同様の動作をします。property属性はアクション・フォームBeanで使用するプロパティ名です。name属性で、該当するアクション・フォームBeanを指定します。省略した場合は、<html:form>タグの遷移先(/registration)に該当するアクション・フォームBeanが適用されます。
  4. (4)<html:radio>タグを使用します。HTMLの<input type="radio">タグとほぼ同様の動作をします。value属性はプロパティ名に対するプロパティ値です。
  5. (5)<html:multibox>タグを使用します。HTMLの<input type="checkbox">タグとほぼ同様の動作をします。
  6. (6)<html:select>タグ、<html:option>タグを使用します。HTMLの<select>タグ、<option>タグとほぼ同様の動作をします。 <html:select>タグのproperty属性でアクション・フォームBeanのプロパティ名を指定し、<html:option>タグのvalue属性で選択された項目のプロパティ値を指定します。
  7. (7)<html:textarea>タグを使用します。HTMLの<textarea>タグとほぼ同様の動作をします。
  8. (8)<html:hidden>タグを使用します。HTMLの<input type="hidden">タグとほぼ同様の動作をします。
  9. (9)<html:submit>タグを使用します。HTMLの<input type="submit">タグとほぼ同様の動作をします。
  10. (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. (1)taglibディレクティブで使用するタグライブラリを指定します。
  2. (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. (1)ActionFormクラスをスーパークラスとして、RegistrationFormクラスを宣言します。
  2. (2)exHtml.jspで入力されたプロパティ値を保存する変数を宣言します。
  3. (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. (1)Actionクラスをスーパークラスとして、RegistrationActionクラスを宣言します。
  2. (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. (1)<form-beans>タグでアクション・フォームBeanを指定します。
  2. (2)<action-mappings>タグでアクション・クラス、関連するアクション・フォームBeanを指定します。
  3. (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タグを生成するときに使用します。

4htmlタグライブラリ