Struts の DynaValidatorForm や Tiles などの新しい(?)機能の使い方を説明します。 Struts の基本的な部分は説明していませんので、Struts の基本的な使い方などは WEB+DB PRESS Vol.9 や Professional JSP (下) などを参照して下さい。
以下の説明を読むのが面倒な人は、サンプルプログラム を見れば大体の使い方は分かると思います。 (サンプルプログラムを見るだけだったら struts に附属の example で良いような…)
WEB-INF/lib にコピー commons-* jakarta-oro.jar struts.jar WEB-INF/struts にコピー *.tld validator-rules.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>
<plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml" /> </plug-in>
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>
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>
例: errors.required={0} が入力されていません と定義されていると ユーザID が入力されていません パスワード が入力されていません となる
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 メソッドで取り出すだけ。
(まだ書いていません)
$Id: index.html,v 1.5 2003/02/20 17:23:16 sugiyama Exp $ Copyright (c) 2002 Hidenori Sugiyama