/(top page)


○ このページの内容

Struts の DynaValidatorForm や Tiles などの新しい(?)機能の使い方を説明します。 Struts の基本的な部分は説明していませんので、Struts の基本的な使い方などは WEB+DB PRESS Vol.9 や Professional JSP (下) などを参照して下さい。

以下の説明を読むのが面倒な人は、サンプルプログラム を見れば大体の使い方は分かると思います。 (サンプルプログラムを見るだけだったら struts に附属の example で良いような…)

○ インストール

  1. http://jakarta.apache.org/builds/jakarta-struts/nightly/ から 最新の snapshot を取得
  2. 取得したファイルを解凍(jakarta-struts ディレクトリができる)
  3. jakarta-struts/lib に移動、以下のファイルをコピー
    WEB-INF/lib にコピー
    	commons-*
    	jakarta-oro.jar
    	struts.jar
    
    WEB-INF/struts にコピー
    	*.tld
    	validator-rules.xml
    			
  4. web.xml に追加
    
    <servlet>
    	<servlet-name>action</servlet-name>
    	<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    
    	<init-param>
    		<param-name>config</param-name>
    		<param-value>/WEB-INF/conf/struts-config.xml</param-value>
    	</init-param>
    
    	<init-param>
    		<param-name>debug</param-name>
    		<param-value>5</param-value>
    	</init-param>
    
    	<init-param>
    		<param-name>detail</param-name>
    		<param-value>2</param-value>
    	</init-param>
    
    	<init-param>
    		<param-name>validate</param-name>
    		<param-value>true</param-value>
    	</init-param>
    
    	<load-on-startup>2</load-on-startup>
    </servlet>
    
    <servlet-mapping>
    	<servlet-name>action</servlet-name>
    	<url-pattern>*.do</url-pattern>
    </servlet-mapping>
    
    			

○ DynaValidatorForm

ActionForm を自動生成(?)する DynaForm と、 Form の入力項目を自動チェックする ValidatorForm を組み合わせたもの

初期設定

  1. struts-config.xml に plug-in 設定を追加
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    	<set-property property="pathnames"
    		value="/WEB-INF/validator-rules.xml,
    		/WEB-INF/validation.xml" />
    </plug-in>
    			
  2. ApplicationResources に errors. で始まる項目を追加する。 (詳しくは WEB+DB PRESS Vol.9 、 もしくはこちらのサンプルプログラムを見て下さい。)

Form の追加

  1. struts-config.xml の <form-beans> </form-beans> の間に form 設定を追加

    ここでは、ユーザIDとパスワードを入力するログインフォームを想定 (form-bean の dynamic と type は固定、用途によって name と form-property を変える)

    <form-bean name="auth_login_form" dynamic="true" type="org.apache.struts.validator.DynaValidatorForm">
    	<form-property name="userId" type="java.lang.String"/>
    	<form-property name="password" type="java.lang.String"/>
    </form-bean>
    		
  2. WEB-INF/conf/validation.xml の <formset> と </formset> の間に追加

    <form name="auth_login_form">
    	<field property="userId" depends="required">
    		<arg0 key="ユーザID" resource="false"/>
    	</field>
    	<field property="password" depends="required">
    		<arg0 key="パスワード" resource="false"/>
    	</field>
    </form>
    		

Action での使い方

  1. struts-config.xml に action を追加する (通常の struts の使い方と同じなので省略)
  2. .jsp に form を追加する (通常の struts の使い方と同じなので省略、ただし JavaScript によるチェックをする場合は ちょっとだけ追加が必要。サンプルプログラムを参照)
  3. Action の中で form から値を取得する
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    	HttpServletRequest request, HttpServletResponse response)
    	throws IOException, ServletException {
    
    	DynaActionForm dynaForm = (DynaActionForm)form;
    	String userId = (String)dynaForm.get("userId");
    	String password = (String)dynaForm.get("password");
    
    	return mapping.findForward("success");
    }
    			
    form を DynaActionForm にキャストして、get メソッドで取り出すだけ。

○ Tiles

(まだ書いていません)


$Id: index.html,v 1.5 2003/02/20 17:23:16 sugiyama Exp $
Copyright (c) 2002 Hidenori Sugiyama