実験開始。
ただいま23:12。もうすぐ月曜日や。
とりあえず作業段取りにしたがってやることやっちゃおう。
1.validation.xml の記述。
validation.xml(間違ってる)
<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd"> <form-validation> <formset> <form name="LoginForm"> <field property="userID" depends="required,maxlength"> <arg0 key="ユーザーID" resource="false" /> <arg1 name="maxlength" key="${var:maxlength}" resource="false" /> <var> <var-name>maxlength</var-name> <var-value>5</var-value> </var> </field> <field property="password" depends="required,maxlength"> <arg0 key="パスワード" resource="false" /> <arg1 name="maxlength" key="${var:maxlength}" resource="false" /> <var> <var-name>maxlength</var-name> <var-value>5</var-value> </var> </field> </form> </formset> </form-validation>
google 先生に聞いた内容から判断するとこんな感じっぽい感じ。
ちなみに、この作例ですと項目の必須入力チェックと5文字以下と言う入力チェックがかかる予定。
2.LoginForm を ValidatorForm(org.apache.struts.validator.ValidatorForm)から継承に変える。スーパークラスを変更するだけ。
LoginForm.java(それなりに正しい)
import org.apache.struts.validator.ValidatorForm; public class LoginForm extends ValidatorForm { private String userID; private String password; public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUserID() { return userID; } public void setUserID(String userID) { this.userID = userID; } }
3.Login.jsp に validator がエラーメッセージを差し込む領域を指定するタグ(
)を書く。
Login.jsp(問題ない)
<%@page contentType="text/html; charset=Windows-31J"%> <%@taglib uri="/tags/struts-html" prefix="html"%> <html:html> <head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=Windows-31J"> <meta HTTP-EQUIV="Content-Language" CONTENT="ja"> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> </head> <body> <html:errors/> <html:form action="/Login"> 名前:<html:text property="userID"/><br> パスワード:<html:text property="password"/><br> <html:submit property="submit" value="ログイン"/> </html:form> </body> </html:html>
4.struts-config.xml の追記
struts-config.xml(間違ってる)
<?xml version="1.0" encoding="iso-8859-1"?> <!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> <data-sources /> <form-beans> <form-bean name="loginForm" type="LoginForm" /> </form-beans> <global-exceptions /> <global-forwards /> <action-mappings> <action path="/Login" type="LoginAction" name="loginForm" scope="request" input="Login.jsp" validate="true"> <forward name="next" path="/loginSuccess.jsp"/> <forward name="reject" path="/rejectUser.jsp"/> </action> </action-mappings> <message-resources /> <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" /> <set-property property="stopOnFirstError" value="true" /> </plug-in> </struts-config>
オリジナルとの変更箇所は、
5.commons-validator.jar をWEB-INF/libにコピる。
6.validation-rules.xml ををWEB-INFにコピる。
さ、行ってみよ!
http://localhost:8080/test/Login.jsp
入力項目に何も入れずに、サブミットぉ〜!
あれ?普通に失敗した方の画面に遷移しちゃってますけど。
えっとですね、そうでは無くて、内部エラー500 XXX exception みたいな哀しい感じか、ユーザーIDを入力してね!みたいな感じを期待してやまないんですけど。
ま、一発目はこんなもんか。夜はまだまだ長い。うがー。