ルール名
|
内容
|
required
|
入力必須の確認。
|
validwhen
|
指定した条件式に合致するかの確認。使用する際はantlr.jarが必要。
|
minlength
|
指定した文字数より少なくないかの確認。
|
maxlength
|
指定した文字数より多くないかの確認。
|
mask
|
指定した正規表現に合致する値かの確認。
|
byte
|
Byte型のクラスに変換できる値かの確認。
|
short
|
Short型のクラスに変換できる値かの確認。
|
integer
|
Integer型のクラスに変換できる値かの確認。
|
long
|
Long型のクラスに変換できる値かの確認。
|
float
|
Float型のクラスに変換できる値かの確認。
|
double
|
Double型のクラスに変換できる値かの確認。
|
date
|
|
intRange
|
指定した数値の範囲内の値かの確認。値はInteger型のクラスに変換できる必要がある。
|
floatRange
|
指定した数値の範囲内の値かの確認。値はFloat型のクラスに変換できる必要がある。
|
doubleRange
|
指定した数値の範囲内の値かの確認。値はDouble型のクラスに変換できる必要がある。
|
creditCard
|
クレジットカード番号のフォーマットに合致する値かの確認。
|
email
|
メールアドレスのフォーマットに合致する値かの確認。
|
url
|
URLのフォーマットに合致する値かの確認。
|
|
1. |
アクション・フォームBeanにValidator処理を行うための記述を行います。 |
2. |
アクション・フォームBeanの各プロパティに適用するValidatorルールをvalidation.xmlに記述します。Validator自体の動作はvalidator-rules.xmlに定義されています。validator-rules.xmlはあらかじめ定義されているものを使用します。 |
3. |
メッセージ・リソースファイルにvalidation.xmlのルールに合致しなかった場合に表示するエラーメッセージを記述します。 |
4. |
エラーメッセージを表示するための、JSPプログラムを作成します。 |
5. |
struts-config.xmlにValidator関連の設定を行います。 |
package struts;
import org.apache.struts.validator.*;
import org.apache.struts.action.*;
//Validatorを使用する場合はValidatorFormクラスを継承します。
//その他は一般的なアクション・フォームBeanの作成方法と変わりません。
public final class ExValidatorForm extends ValidatorForm {
private String requireV;
private String validwhenV;
private String countV;
private String patternV;
private String dateV;
private String rangeV;
private String emailV;
public void setRequireV(String requireV)
{this.requireV = requireV;}
public void setValidwhenV(String validwhenV)
{this.validwhenV = validwhenV;}
public void setCountV(String countV)
{this.countV = countV;}
public void setPatternV(String patternV)
{this.patternV = patternV;}
public void setDateV(String dateV)
{this.dateV = dateV;}
public void setRangeV(String rangeV)
{this.rangeV = rangeV;}
public void setEmailV(String emailV)
{this.emailV = emailV;}
public String getRequireV() {return requireV;}
public String getValidwhenV() {return validwhenV;}
public String getCountV() {return countV;}
public String getPatternV() {return patternV;}
public String getDateV() {return dateV;}
public String getRangeV() {return rangeV;}
public String getEmailV() {return emailV;}
}
|
|
2.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>
<!-- 適用するアクション・フォームBeanを論理名で指定 -->
<form name="ExValidator">
<!-- requiredルールの指定 -->
<field property="requireV" depends="required">
</field>
<!-- validwhenルールの指定
validwhenの条件式をtest変数で指定
*this*はプロパティvalidwhenVを表す -->
<field property="validwhenV" depends="validwhen">
<msg name="validwhen" key="errors.validwhen" />
<var>
<var-name>test</var-name>
<var-value>
((*this* != null) and (countV != null))
</var-value>
</var>
</field>
<!-- minlengthルールの指定
minlength変数で条件の最低入力数を指定 -->
<field property="countV" depends="minlength">
<var>
<var-name>minlength</var-name>
<var-value>4</var-value>
</var>
</field>
<!-- maskルールの指定
mask変数で条件パターンを指定 -->
<field property="patternV" depends="mask">
<var>
<var-name>mask</var-name>
<var-value>^[a-zA-Z]*$</var-value>
</var>
</field>
<!-- dateルールの指定
datePattern変数で条件の日時パターンを指定 -->
<field property="dateV" depends="date">
<msg name="date" key="errors.date" />
<var>
<var-name>datePattern</var-name>
<var-value>yyyy/mm/dd</var-value>
</var>
</field>
<!-- intRangeルールの指定
max変数、min変数で条件の範囲を指定 -->
<field property="rangeV" depends="intRange">
<var>
<var-name>min</var-name>
<var-value>4</var-value>
</var>
<var>
<var-name>max</var-name>
<var-value>16</var-value>
</var>
</field>
<!-- emailルールの指定 -->
<field property="emailV" depends="email">
</field>
</form>
</formset>
</form-validation>
|
|
ルール名
|
サブ要素
|
内容
|
required
|
-
|
-
|
validwhen
|
test
|
指定した条件式に合致するかの確認。使用する際はantlr.jarが必要。
|
minlength
|
minlength
|
指定した文字数より少なくないかの確認。
|
maxlength
|
maxlength
|
指定した文字数より多くないかの確認。
|
mask
|
mask
|
指定した正規表現に合致する値かの確認。
|
byte
|
-
|
-
|
short
|
-
|
-
|
integer
|
-
|
-
|
long
|
-
|
-
|
float
|
-
|
-
|
double
|
-
|
-
|
date
|
datePattern
|
日時パターンを指定。パターンはSimpleDateFormatクラスを利用する。datePatternStrictは厳密なパターンが適用される。yyyy/mm/ddで2005/1/1はパターンに合致しない2005/01/01の場合はパターンに合致する。
|
datePatternStrict
|
intRange
|
min
|
minは最小値、maxは最大値
|
max
|
floatRange
|
min
|
minは最小値、maxは最大値
|
max
|
doubleRange
|
min
|
minは最小値、maxは最大値
|
max
|
creditCard
|
-
|
-
|
email
|
-
|
-
|
url
|
allowallschemes
|
スキームを許可するかどうか。trueを設定するとすべてのスキームが許可される。デフォルトはfalse。
|
allow2slashes
|
ダブルスラッシュ(//)を許可するかどうか。デフォルトはfalse。
|
nofragments
|
URLの分割を許可するかどうか。デフォルトはfalse(分割を許可する)。
|
schemes
|
許可するスキームを,(カンマ)で指定する。デフォルトはhttp, https, ftp。
|
|
メッセージ・リソースファイルの作成
errors.required =requireV is wrong.<br>
errors.validwhen=validwhenV is wrong.<br>
errors.minlength=countV is wrong.<br>
errors.invalid =patternV is wrong.<br>
errors.date =dateV is wrong.<br>
errors.range =rangeV is wrong.<br>
errors.email =emailV is wrong.<br>
validator-rules.xmlにルールごとに該当するメッセージ・リソースファイルのキーが定義されています。以下に定義されているキーを記載します。また、validation.xmlに<msg>タグを記載することで、任意のキーを使用することができます。 |
ルール名 | 内容 | required | errors.required | validwhen | errors.required | minlength | errors.minlength | maxlength | errors.maxlength | mask | errors.invalid | byte | errors.byte | short | errors.short | integer | errors.integer | long | errors.long | float | errors.float | double | errors.double | date | errors.date | intRange | errors.range | floatRange | errors.range | doubleRange | errors.range | creditCard | errors.creditcard | email | errors.email | url | errors.url |
|
|
4.JSPの作成
【error.jsp】Validatorルールに合致したなかったときに表示されるエラー画面です。 |
<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<html:html>
<head><title>エラー画面</title></head>
<body>
エラーメッセージ
<br> <%-- <html:messages>タグでエラーメッセージを
表示します。エラーメッセージを表示するときは
message属性をfalseにします。 --%>
<html:messages id="msg" message="false">
<%-- filter属性をfalseにすることでメッセージに
HTMLタグを利用できます。trueにするとHTMLタグが
あった場合置換文字(<、>など)に変換します。 --%>
<bean:write name="msg" ignore="true" filter="false"/>
</html:messages>
</body>
</html:html>
|
|
【exValidator.jsp】Validatorチェックを行う値を入力するフォーム画面です。 |
<%@ page contentType="text/html; charset=Shift_JIS" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<html:html>
<head><title>Validator処理</title></head>
<body>
<html:form action="/ExValidator">
入力必須
<br>
<html:text property="requireV" size="16"/>
<br><br>
validwhen
<br>
<html:text property="validwhenV" size="16"/>
<br><br>
文字数確認
<br>
<html:text property="countV" size="16"/>
<br><br>
パターン確認
<br>
<html:text property="patternV" size="16"/>
<br><br>
日付確認
<br>
<html:text property="dateV" size="16"/>
<br><br>
範囲確認
<br>
<html:text property="rangeV" size="16"/>
<br><br>
メールアドレス確認
<br>
<html:text property="emailV" size="16"/>
<br><br>
<html:submit property="submit" value="送信"/>
</html:form>
</body>
</html:html>
|
|
5.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>
<!-- アクション・フォームBeanの指定 -->
<form-beans>
<form-bean name="ExValidator"
type="struts.ExValidatorForm" />
</form-beans>
<!-- アクション・クラスの指定 -->
<action-mappings>
<!-- Validatorを使用する場合validate属性をtrueに指定。
Validatorのエラーを表示する画面をinput属性で指定。 -->
<action path="/ExValidator"
type="struts.ExValidatorAction"
name="ExValidator"
scope="request"
validate="true"
input="/error.jsp">
<forward name="info" path="/exValidator2.jsp"/>
</action>
</action-mappings>
<!-- メッセージ・リソースファイルの指定 -->
<message-resources parameter="resources.application"/>
<!-- Validatorの指定。プロパティpathnamesの値に
validator-rules.xmlとvalidation.xmlを指定 -->
<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>
|
|
応用処理
1.複数条件指定 <file>タグのdepends属性に値を複数指定することにより、チェックする条件を複数指定することができます。emailフォーマットチェック且つ、必須入力チェックなど条件を組み合わせて指定できます。 |
<!-- emailフォーマットチェックと必須入力チェックを指定 -->
<field property="emailV" depends="email,required">
</field>
|
|
2.エラーメッセージに可変置き換え文字を利用 <field>タグに<argn>タグ(nは0~3のいずれか)を指定することで、エラーメッセージに可変置き換え文字を使用することができます。可変置き換え文字はメッセージ・リソースファイルで指定、直接指定、<var>タグの変数指定のいずれかを選ぶことができます。直接指定、<var>タグの変数指定を行う場合は<argn>タグのresource属性にfalseを指定する必要があります。 |
・・・・・
<field property="countV" depends="minlength">
<!-- 可変置き換え文字にメッセージ・リソースファイルの
"minlength.msg"を指定 -->
<arg0 key="minlength.msg" />
<!-- 可変置き換え文字に<var>タグのminlengthを指定 -->
<arg1 key="${var:minlength}" resource="false" />
<var>
<var-name>minlength</var-name>
<var-value>4</var-value>
</var>
</field>
・・・・・
|
|
errors.minlength={0} needs over {1} characters.
minlength.msg=minlength
|
|
3.メッセージ・リソースファイルのキーを指定 <field>タグに<msg>タグを指定することで参照されるメッセージ・リソースファイルのキーを変更することができます。
|
・・・・・
<field property="requireV" depends="required">
<!-- エラー時のメッセージ・リソースファイルのキーを
"errors.original.required"に変更 -->
<msg name="required" key="errors.original.required" />
</field>
・・・・・
|
|
4.動的アクション・フォームBeanにValidatorを使用 動的アクション・フォームBeanにValidatorを使用することができます。struts-config.xmlのタグのtype属性にDynaValidatorFormを指定するだけで使用することができます。他の部分はアクション・フォームBean時のValidatorの使用方法と同一です。
|
【<form-bean>タグにDynaValidatorFromを指定】 |
・・・・・
<form-beans>
<!-- type属性にDynaValidatorFormを指定 -->
<form-bean
name="DynaForm"
type="org.apache.struts.validator.DynaValidatorForm">
<form-property
name="requireV"
type="java.lang.String" />
</form-bean>
</form-beans>
<action-mappings>
<action path="/ExValidator"
type="struts.ExValidatorAction"
name="DynaForm"
scope="request"
validate="true"
input="/error.jsp">
<forward name="info" path="/exValidator2.jsp"/>
</action>
</action-mappings>
・・・・・
|
|