public class FieldChecksEx
extends org.apache.struts.validator.FieldChecks
Validator 追加ルールクラス。
Strutsが提供する FieldChecks を拡張した入力チェッククラス。
FieldChecksEx の拡張ルールとしては、以下のものがある。
| 英数字チェック | validateAlphaNumericString() |
alphaNumericString |
フィールド値が半角英数字のみで構成されているかどうかをチェック。 | |
| 大文字英数字チェック | validateCapAlphaNumericString() |
capAlphaNumericString |
値が大文字の半角英数字のみで構成されているかどうかをチェック。 | |
| フィールド数値チェック | validateNumber() |
number |
フィールド値が数値であることをチェック。 | |
| 半角カナ文字チェック | validateHankakuKanaString() |
hankakuKanaString |
フィールド値が半角カナのみで構成されていることをチェック。 | |
| 半角文字チェック | validateHankakuString() |
hankakuString |
フィールド値が半角の文字のみで構成されていることをチェック。 | |
| 全角文字チェック | validateZenkakuString() |
zenkakuString |
フィールド値が全角の文字のみで構成されていることをチェック。 | |
| 全角カナ文字チェック | validateZenkakuKanaString() |
zenkakuKanaString |
フィールド値が全角カナ文字のみで構成されていることをチェック。 | |
| 入力禁止文字チェック | validateProhibited() |
prohibited |
フィールド値に入力禁止文字が含まれていないことをチェック。 | |
| 文字列長一致チェック | validateStringLength() |
stringLength |
フィールド値が指定した文字列長と一致することをチェック。 | |
| 数字文字列チェック | validateNumericString() |
numericString |
フィールド値が数字のみで構成されていることをチェック。 | |
| バイト列長チェック | validateByteLength() |
byteLength |
フィールド値のバイト列長が指定した長さと一致することをチェック。 | |
| バイト列範囲チェック | validateByteRange() |
byteRange |
フィールド値のバイト列長が指定した範囲以内であることをチェック。 | |
| 日付範囲チェック | validateDateRange() |
dateRange |
フィールド値の日付が指定した範囲以内であることをチェック。 | |
| 複数フィールドチェック | validateMultiField() |
multiField |
複数フィールド間の相関チェック。 | |
| 配列・コレクション型フィールド全要素チェック | validateArraysIndex() |
(validation.xmlの <depend>要素で決定) |
depends属性で指定された入力チェックを配列・コレクション型のフィールド値 の全ての値に対してチェックを行う。 |
フィールドチェックの詳細については、各メソッドの説明を参照。
拡張したValidatorを利用するためには、アクション毎に 検証内容を記述した定義ファイル( validation.xml )
を作成する必要がある。
必須チェック以外のチェックルールでは、 半角スペースのみの文字列が入力値として渡されてきた場合、エラーと判定されない。 エラーとする場合は必須チェックと組み合わせるか、 半角スペースのチェックを追加すること。
<formset>タグ内部の <form> 要素の
name 属性に、 struts-config.xmlで定義されている
アクションのパス名を記述する。
記述がない場合は、該当するアクションパスの検証は一切行われない。 <field>要素の
property 属性に、 対象のフィールド名、depends属性に
validation-rules.xmlで定義されている 検証ルール名を記述する。
ひとつのフォームに複数の検証を行う場合(必須入力、桁数など)は、 カンマ区切りで記述していく。
ただし、出力されるエラーメッセージは1フィールドに対し、 1つのみである。 (必須入力、桁数チェックの両方に違反している場合、どれか1つの
エラーしか出力されない)
<formset>
・・・
<!-- 単体のフィールド検証 -->
<form name="/logon">
<field property="companyId"
depends="required,alphaNumericString,maxlength">
<arg0 key="logon.companyId"/>
<arg1 key="${var:maxlength}" resource="false"/>
<var>
<var-name>maxlength</var-name>
<var-value>10</var-value>
</var>
</field>
</form>
・・・
</formset>
配列・コレクション型の一覧検証は、下記の点を拡張している。
validation.xmlに <form>
要素を作成するが、 配列・コレクション型の一覧検証を行うためには、下記の設定が必要である。
property 属性でフォーム内のフィールド名を指定する。またプロパティ名には
JXPathIndexedBeanWrapperImplの仕様に従い、ネストしたプロパティ名を 指定することが可能である。<depends>で指定するルールは、
validation-rules.xmlの 末尾が Array であるルール名を用いる。requiredArrayminLengthArraymaxLengthArraymaskArraybyteArrayshortArrayintegerArraylongArrayfloatArraydoubleArraydateArrayintRangeArraydoubleRangeArrayfloatRangeArraycreditCardArrayemailArrayurlArrayalphaNumericStringArrayhankakuKanaStringArrayhankakuStringArrayzenkakuStringArrayzenkakuKanaStringArraycapAlphaNumericStringArraynumberArraynumericStringArrayprohibitedArraystringLengthArraydateRangeArraybyteLengthArraybyteRangeArray
<formset>
・・・
<!-- 配列・コレクション型一覧表示の検証確認 -->
<form name="/isValid">
<field property="codeArray"
depends="requiredArray,alphaNumericStringArray">
<arg0 <b>key="##INDEX" resource="false"</b>/>
<arg1 key="sampleValidate.codeArray"/>
</field>
</form>
・・・
</formset>
配列・コレクション型のインデックス番号をエラーメッセージに 埋め込むためには、<arg0〜3>要素の何れかの
keyに "##INDEX" という文字列を指定し、<resource>
要素を "false" にする。
単体のフィールド検証と同様、<depends>
で複数の検証を行う場合カンマ区切りで複数の検証ルールを指定できる。
Validator フレームワークを利用したフォームは、
、
DynaValidatorActionFormEx
を参照。
ValidatorActionFormEx
FormEx,
DynaValidatorActionFormEx,
ValidatorActionFormEx,
JXPathIndexedBeanWrapperImpl,
直列化された形式| 修飾子とタイプ | フィールドと説明 |
|---|---|
protected static String |
HANKAKU_KANA_LIST_KEY
ApplicationResources ファイルに定義された半角文字テーブルを取得するキー。 |
protected static String |
hankakuKanaList
半角カナ文字列である。
|
static String |
INDEX
配列インデックス型フィールドのIndex値。
|
protected static String |
ZENKAKU_BEGIN_U00_LIST
UNICODE文字コード' 'から'?'の範囲内に存在する 全角文字列。
|
protected static String |
ZENKAKU_KANA_LIST_KEY
ApplicationResources ファイルに定義された全角文字テーブルを取得するキー。 |
protected static String |
zenkakuKanaList
全角カナ文字列。
|
| コンストラクタと説明 |
|---|
FieldChecksEx() |
| 修飾子とタイプ | メソッドと説明 |
|---|---|
protected static org.apache.struts.action.ActionForm |
getActionForm(javax.servlet.http.HttpServletRequest request)
フォーム実装オブジェクトを取得する。
|
protected static org.apache.commons.validator.Field |
getArrayIndexField(org.apache.commons.validator.Field field,
int pos)
指定されたIndexのフィールドを取得する。
|
protected static int |
getByteLength(String value,
String encoding)
指定された文字列のバイト列長を取得する。
|
static String |
getHankakuKanaList()
半角カナのリストを取得する。
|
protected static Method |
getMethod(org.apache.commons.validator.ValidatorAction va,
Class[] paramClass)
配列・コレクションの要素を検証するメソッドを取得する。
|
protected static Class[] |
getParamClass(org.apache.commons.validator.ValidatorAction va)
検証ルールメソッドに渡される引数クラス配列を取得する。
|
static String |
getZenkakuKanaList()
全角カナのリストを取得する。
|
protected static boolean |
isHankaku(char c)
指定された文字が半角文字であることをチェックする。
|
protected static boolean |
isHankakuKana(char c)
指定された文字が半角カナ文字であることをチェックする。
|
protected static boolean |
isValid(Object result)
リフレクションを用いて実行されたメソッドの結果 オブジェクトから、検証が成功したか否かをチェックする。
|
protected static boolean |
isZenkaku(char c)
指定された文字が全角文字であることをチェックする。
|
protected static boolean |
isZenkakuKana(char c)
指定された文字が全角カナ文字であることをチェックする。
|
protected static String |
replaceIndexString(String arg,
int pos)
argの値が##INDEXの時、走査中のインデックス値に 置換する
このメソッドはアクションフォームを対象としているため フォーム以外で、流用を行なうことを推奨しない。 |
static boolean |
validateAlphaNumericString(Object bean,
org.apache.commons.validator.ValidatorAction va,
org.apache.commons.validator.Field field,
org.apache.struts.action.ActionMessages errors,
org.apache.commons.validator.Validator validator,
javax.servlet.http.HttpServletRequest request)
指定されたフィールドが英数字であることをチェックする。
|
static boolean |
validateArraysIndex(Object bean,
org.apache.commons.validator.ValidatorAction va,
org.apache.commons.validator.Field field,
org.apache.struts.action.ActionMessages errors,
org.apache.commons.validator.Validator validator,
javax.servlet.http.HttpServletRequest request)
配列・コレクション型のフィールド値を全要素チェックする。
|
static boolean |
validateByteLength(Object bean,
org.apache.commons.validator.ValidatorAction va,
org.apache.commons.validator.Field field,
org.apache.struts.action.ActionMessages errors,
org.apache.commons.validator.Validator validator,
javax.servlet.http.HttpServletRequest request)
指定されたフィールドのバイト列長が一致していることをチェックする。
|
static boolean |
validateByteRange(Object bean,
org.apache.commons.validator.ValidatorAction va,
org.apache.commons.validator.Field field,
org.apache.struts.action.ActionMessages errors,
org.apache.commons.validator.Validator validator,
javax.servlet.http.HttpServletRequest request)
指定されたフィールドのバイト列長が 指定した範囲内であることをチェックする。
|
static boolean |
validateCapAlphaNumericString(Object bean,
org.apache.commons.validator.ValidatorAction va,
org.apache.commons.validator.Field field,
org.apache.struts.action.ActionMessages errors,
org.apache.commons.validator.Validator validator,
javax.servlet.http.HttpServletRequest request)
指定されたフィールドが大文字英数字であることをチェックする。
|
static boolean |
validateDateRange(Object bean,
org.apache.commons.validator.ValidatorAction va,
org.apache.commons.validator.Field field,
org.apache.struts.action.ActionMessages errors,
org.apache.commons.validator.Validator validator,
javax.servlet.http.HttpServletRequest request)
日付が指定した範囲内であるかどうかチェックする。
|
static boolean |
validateHankakuKanaString(Object bean,
org.apache.commons.validator.ValidatorAction va,
org.apache.commons.validator.Field field,
org.apache.struts.action.ActionMessages errors,
org.apache.commons.validator.Validator validator,
javax.servlet.http.HttpServletRequest request)
指定されたフィールドが半角カナ文字列であることをチェックする。
|
static boolean |
validateHankakuString(Object bean,
org.apache.commons.validator.ValidatorAction va,
org.apache.commons.validator.Field field,
org.apache.struts.action.ActionMessages errors,
org.apache.commons.validator.Validator validator,
javax.servlet.http.HttpServletRequest request)
指定されたフィールドが半角文字列であることをチェックする。
|
static boolean |
validateMultiField(Object bean,
org.apache.commons.validator.ValidatorAction va,
org.apache.commons.validator.Field field,
org.apache.struts.action.ActionMessages errors,
org.apache.commons.validator.Validator validator,
javax.servlet.http.HttpServletRequest request)
複数フィールドの相関チェックを行う。
|
static boolean |
validateNumber(Object bean,
org.apache.commons.validator.ValidatorAction va,
org.apache.commons.validator.Field field,
org.apache.struts.action.ActionMessages errors,
org.apache.commons.validator.Validator validator,
javax.servlet.http.HttpServletRequest request)
指定されたフィールドが数値であることをチェックする。
|
static boolean |
validateNumericString(Object bean,
org.apache.commons.validator.ValidatorAction va,
org.apache.commons.validator.Field field,
org.apache.struts.action.ActionMessages errors,
org.apache.commons.validator.Validator validator,
javax.servlet.http.HttpServletRequest request)
指定されたフィールドが数字のみからなる文字列であることを チェックする。
|
static boolean |
validateProhibited(Object bean,
org.apache.commons.validator.ValidatorAction va,
org.apache.commons.validator.Field field,
org.apache.struts.action.ActionMessages errors,
org.apache.commons.validator.Validator validator,
javax.servlet.http.HttpServletRequest request)
指定されたフィールドに入力禁止文字列が混入しているか どうかをチェックする。
|
static boolean |
validateStringLength(Object bean,
org.apache.commons.validator.ValidatorAction va,
org.apache.commons.validator.Field field,
org.apache.struts.action.ActionMessages errors,
org.apache.commons.validator.Validator validator,
javax.servlet.http.HttpServletRequest request)
指定されたフィールドの文字列長が一致していることをチェックする。
|
static boolean |
validateZenkakuKanaString(Object bean,
org.apache.commons.validator.ValidatorAction va,
org.apache.commons.validator.Field field,
org.apache.struts.action.ActionMessages errors,
org.apache.commons.validator.Validator validator,
javax.servlet.http.HttpServletRequest request)
指定されたフィールドが全角カタカナ文字列であることをチェックする。
|
static boolean |
validateZenkakuString(Object bean,
org.apache.commons.validator.ValidatorAction va,
org.apache.commons.validator.Field field,
org.apache.struts.action.ActionMessages errors,
org.apache.commons.validator.Validator validator,
javax.servlet.http.HttpServletRequest request)
指定されたフィールドが全角文字列であることをチェックする。
|
isString, validateByte, validateCreditCard, validateDate, validateDouble, validateDoubleRange, validateEmail, validateFloat, validateFloatRange, validateInteger, validateIntRange, validateLong, validateMask, validateMaxLength, validateMinLength, validateRequired, validateRequiredIf, validateShort, validateUrlprotected static String hankakuKanaList
ApplicationResources ファイルに定義する。protected static String zenkakuKanaList
ApplicationResources ファイルに定義する。protected static final String HANKAKU_KANA_LIST_KEY
ApplicationResources ファイルに定義された半角文字テーブルを取得するキー。protected static final String ZENKAKU_KANA_LIST_KEY
ApplicationResources ファイルに定義された全角文字テーブルを取得するキー。protected static boolean isHankakuKana(char c)
c - 文字trueprotected static boolean isHankaku(char c)
c - 文字trueprotected static boolean isZenkaku(char c)
c - 文字trueprotected static boolean isZenkakuKana(char c)
c - 文字truepublic static boolean validateAlphaNumericString(Object bean, org.apache.commons.validator.ValidatorAction va, org.apache.commons.validator.Field field, org.apache.struts.action.ActionMessages errors, org.apache.commons.validator.Validator validator, javax.servlet.http.HttpServletRequest request)
エラーとなった場合には、エラー情報を生成し、 指定されたエラー情報リストに追加する。 エラーメッセージのフォーマットは、validation-rules.xml
に記述する。
bean - 検査対象のオブジェクトva - Strutsにより用意されたValidatorActionfield - フィールドオブジェクトerrors - ActionMessages アクションエラーvalidator - Validatorインスタンスrequest - HTTPリクエストtruepublic static boolean validateCapAlphaNumericString(Object bean, org.apache.commons.validator.ValidatorAction va, org.apache.commons.validator.Field field, org.apache.struts.action.ActionMessages errors, org.apache.commons.validator.Validator validator, javax.servlet.http.HttpServletRequest request)
エラーとなった場合には、エラー情報を生成し、 指定されたエラー情報リストに追加する。 エラーメッセージのフォーマットは、validation-rules.xml
に記述する。
bean - 検査対象のオブジェクトva - Strutsにより用意されたValidatorActionfield - フィールドオブジェクトerrors - ActionMessages アクションエラーvalidator - Validatorインスタンスrequest - HTTPリクエストtruepublic static boolean validateNumber(Object bean, org.apache.commons.validator.ValidatorAction va, org.apache.commons.validator.Field field, org.apache.struts.action.ActionMessages errors, org.apache.commons.validator.Validator validator, javax.servlet.http.HttpServletRequest request)
BigDecimal 型を生成する
ここで生成不可能ならばエラー用のActionMessageを作成し、false を返却する。
次に整数部の桁数が指定されている場合に、桁数の確認を行う。 validation.xml で
isAccordedInteger() が "true" 指定されている場合のみ
整数桁数の同一チェックが行われる。 チェックに引っかかった場合は、エラー用のActionMessageを作成し、falseを返却する。
最後に小数部の桁数が指定されている場合に、桁数の確認を行う。
validation.xmlでisAccordedScaleが"true"である場合のみ 小数桁数の同一チェックが行われる。
エラーとなった場合には、エラー情報を生成し、 指定されたエラー情報リストに追加する。 エラーメッセージのフォーマットは、validation-rules.xml
に記述する。
下記は、整数部3、小数部2である数値を検証する例である。
<form name="/sample">
・・・
<field property="escape"
depends="number">
<arg0 key="sample.escape"/>
<var>
<var-name>integerLength</var-name>
<var-value>3</var-value>
</var>
<var>
<var-name>scale</var-name>
<var-value>2</var-value>
</var>
<var>
<var-name>isAccordedInteger</var-name>
<var-value>true</var-value>
</var>
<var>
<var-name>isAccordedScale</var-name>
<var-value>true</var-value>
</var>
</field>
・・・
</form>
var-name |
var-value |
||
integerLength |
整数部桁数 | false |
整数の桁数を設定する、isAccordedInteger指定が
無いときは、指定桁数以内の検証を行う。省略時、または非数値を 設定したときは、検証を行なわない。 |
scale |
小数部桁数 | false |
小数値の桁数を設定する、isAccordedScale指定が
無いときは、指定桁数以内の検証を行う。省略時、または非数値を 設定したときは、検証を行なわない。 |
isAccordedInteger |
整数桁数一致チェック | false |
trueが指定されたとき、整数桁数の一致チェックが 行なわれる。省略時、true以外の文字列が設定された時は
桁数以内チェックとなる。 |
isAccordedScale |
小数桁数一致チェック | false |
trueが指定されたとき、小数桁数の一致チェックが 行なわれる。省略時、true以外の文字列が設定された時は
桁数以内チェックとなる。 |
bean - 検査対象のオブジェクトva - Strutsにより用意されたValidatorActionfield - フィールドオブジェクトerrors - ActionMessages アクションエラーvalidator - Validatorインスタンスrequest - HTTPリクエストtruepublic static boolean validateHankakuKanaString(Object bean, org.apache.commons.validator.ValidatorAction va, org.apache.commons.validator.Field field, org.apache.struts.action.ActionMessages errors, org.apache.commons.validator.Validator validator, javax.servlet.http.HttpServletRequest request)
エラーとなった場合には、エラー情報を生成し、 指定されたエラー情報リストに追加する。 エラーメッセージのフォーマットは、validation-rules.xml
に記述する。
bean - 検査対象のオブジェクトva - Validatorにより用意された ValidatorActionfield - フィールドオブジェクトerrors - ActionMessages アクションエラーvalidator - Validatorインスタンスrequest - HTTPリクエストtruepublic static boolean validateHankakuString(Object bean, org.apache.commons.validator.ValidatorAction va, org.apache.commons.validator.Field field, org.apache.struts.action.ActionMessages errors, org.apache.commons.validator.Validator validator, javax.servlet.http.HttpServletRequest request)
エラーとなった場合には、エラー情報を生成し、 指定されたエラー情報リストに追加する。エラーメッセージのフォーマットは、
validation-rules.xmlに記述する。
bean - 検査対象のオブジェクトva - Validatorにより用意された ValidatorActionfield - フィールドオブジェクトerrors - アクションエラーvalidator - Validatorインスタンスrequest - HTTPリクエストtruepublic static boolean validateZenkakuString(Object bean, org.apache.commons.validator.ValidatorAction va, org.apache.commons.validator.Field field, org.apache.struts.action.ActionMessages errors, org.apache.commons.validator.Validator validator, javax.servlet.http.HttpServletRequest request)
エラーとなった場合には、エラー情報を生成し、 指定されたエラー情報リストに追加する。エラーメッセージのフォーマットは、
validation-rules.xmlに記述する。
bean - 検査対象のオブジェクトva - Validatorにより用意された ValidatorActionfield - フィールドオブジェクトerrors - アクションエラーvalidator - Validatorインスタンスrequest - HTTPリクエストtruepublic static boolean validateZenkakuKanaString(Object bean, org.apache.commons.validator.ValidatorAction va, org.apache.commons.validator.Field field, org.apache.struts.action.ActionMessages errors, org.apache.commons.validator.Validator validator, javax.servlet.http.HttpServletRequest request)
エラーとなった場合には、エラー情報を生成し、 指定されたエラー情報リストに追加する。エラーメッセージのフォーマットは、
validation-rules.xmlに記述する。
bean - 検査対象のオブジェクトva - Validatorにより用意された ValidatorActionfield - フィールドオブジェクトerrors - アクションエラーvalidator - Validatorインスタンスrequest - HTTPリクエストtruepublic static boolean validateProhibited(Object bean, org.apache.commons.validator.ValidatorAction va, org.apache.commons.validator.Field field, org.apache.struts.action.ActionMessages errors, org.apache.commons.validator.Validator validator, javax.servlet.http.HttpServletRequest request)
エラーとなった場合には、エラー情報を生成し、 指定されたエラー情報リストに追加する。 エラーメッセージのフォーマットは、
validation-rules.xmlに記述する。
以下は、禁止文字列チェックの設定例である。
<form name="/sample">
・・・
<field property="escape"
depends="prohibited">
<arg0 key="sample.escape"/>
<var>
<var-name>chars</var-name>
<var-value>!"#$%&'()</var-value>
</var>
</field>
・・・
</form>
var-name |
var-value |
||
| chars | 入力禁止キャラクタ | false | 入力文字列が、入力禁止キャラクタの何れかに対応するとき、 falseを返却する。省略時はtrue |
bean - 検査対象のオブジェクトva - Validatorにより用意された ValidatorActionfield - フィールドオブジェクトerrors - アクションエラーvalidator - Validatorインスタンスrequest - HTTPリクエストtruepublic static boolean validateNumericString(Object bean, org.apache.commons.validator.ValidatorAction va, org.apache.commons.validator.Field field, org.apache.struts.action.ActionMessages errors, org.apache.commons.validator.Validator validator, javax.servlet.http.HttpServletRequest request)
エラーとなった場合には、エラー情報を生成し、 指定されたエラー情報リストに追加する。 エラーメッセージのフォーマットは、
validation-rules.xmlに記述する。
bean - 検査対象のオブジェクトva - Validatorにより用意された ValidatorActionfield - フィールドオブジェクトerrors - アクションエラーvalidator - Validatorインスタンスrequest - HTTPリクエストtruepublic static boolean validateStringLength(Object bean, org.apache.commons.validator.ValidatorAction va, org.apache.commons.validator.Field field, org.apache.struts.action.ActionMessages errors, org.apache.commons.validator.Validator validator, javax.servlet.http.HttpServletRequest request)
エラーとなった場合には、エラー情報を生成し、 指定されたエラー情報リストに追加する。 エラーメッセージのフォーマットは、
validation-rules.xmlに記述する。
以下は、文字列長が5であるときのみtrueを返却する 検証の設定例である。
<form name="/sample">
・・・
<field property="escape"
depends="stringLength">
<arg0 key="sample.escape"/>
<var>
<var-name>length</var-name>
<var-value>5</var-value>
</var>
</field>
・・・
</form>
var-name |
var-value |
||
| stringLength | 入力文字列桁数 | false | 入力文字列長が指定された桁数であるときは true 省略時はtrueが返却される。 |
bean - 検査対象のオブジェクトva - Validatorにより用意されたValidatorActionfield - フィールドオブジェクトerrors - アクションエラーvalidator - Validatorインスタンスrequest - HTTPリクエストtruepublic static boolean validateByteLength(Object bean, org.apache.commons.validator.ValidatorAction va, org.apache.commons.validator.Field field, org.apache.struts.action.ActionMessages errors, org.apache.commons.validator.Validator validator, javax.servlet.http.HttpServletRequest request)
エラーとなった場合には、エラー情報を生成し、 指定されたエラー情報リストに追加する。 エラーメッセージのフォーマットは、
validation-rules.xmlに記述する。
以下は、バイト列長が5であるときのみtrueを返却する 検証の設定例である。
<form name="/sample">
・・・
<field property="escape"
depends="byteLength">
<arg0 key="sample.escape"/>
<var>
<var-name>byteLength</var-name>
<var-value>5</var-value>
</var>
<var>
<var-name>encoding</var-name>
<var-value>Windows-31J</var-value>
</var>
</field>
・・・
</form>
var-name |
var-value |
||
| byteLength | 入力文字列バイト数 | false | 入力文字列バイト長を検証するためのバイト長。 |
| encoding | 文字エンコーディング | false | 入力文字をバイト列に変換する際に使用する文字エンコーディング。 省略された場合はVMのデフォルトエンコーディングが使用される。 |
bean - 検査対象のオブジェクトva - Validatorにより用意されたValidatorActionfield - フィールドオブジェクトerrors - アクションエラーvalidator - Validatorインスタンスrequest - HTTPリクエストtruepublic static boolean validateByteRange(Object bean, org.apache.commons.validator.ValidatorAction va, org.apache.commons.validator.Field field, org.apache.struts.action.ActionMessages errors, org.apache.commons.validator.Validator validator, javax.servlet.http.HttpServletRequest request)
エラーとなった場合には、エラー情報を生成し、 指定されたエラー情報リストに追加する。 エラーメッセージのフォーマットは、
validation-rules.xmlに記述する。
以下は、バイト列長が5以上、10以下であるときのみ true を返却する検証の設定例である。
<form name="/sample">
・・・
<field property="escape"
depends="byteRange">
<arg0 key="sample.escape"/>
<var>
<var-name>maxByte</var-name>
<var-value>10</var-value>
</var>
<var>
<var-name>minByte</var-name>
<var-value>5</var-value>
</var>
<var>
<var-name>encoding</var-name>
<var-value>Windows-31J</var-value>
</var>
</field>
・・・
</form>
var-name |
var-value |
||
| maxByte | 最大バイト数 | false | 入力文字列バイト長を検証するための最大バイト長。 省略した場合はint型の最大値。 |
| minByte | 最大バイト数 | false | 入力文字列バイト長を検証するための最小バイト長。 省略した場合は0。 |
| encoding | 文字エンコーディング | false | 入力文字をバイト列に変換する際に使用する文字エンコーディング。 省略された場合はVMのデフォルトエンコーディングが使用される。 |
bean - 検査対象のオブジェクトva - Validatorにより用意されたValidatorActionfield - フィールドオブジェクトerrors - アクションエラーvalidator - Validatorインスタンスrequest - HTTPリクエストtruepublic static boolean validateDateRange(Object bean, org.apache.commons.validator.ValidatorAction va, org.apache.commons.validator.Field field, org.apache.struts.action.ActionMessages errors, org.apache.commons.validator.Validator validator, javax.servlet.http.HttpServletRequest request)
エラーとなった場合には、エラー情報を生成し、 指定されたエラー情報リストに追加する。 エラーメッセージのフォーマットは、
validation-rules.xmlに記述する。
以下は、日付が2000/01/01から2010/12/31の範囲内であるかどうかの 検証の設定例である。
<form name="/sample">
・・・
<field property="date"
depends="dateRange">
<arg key="label.date" position="0"/>
<var>
<var-name>startDate</var-name>
<var-value>2000/01/01</var-value>
</var>
<var>
<var-name>endDate</var-name>
<var-value>2010/12/31</var-value>
</var>
<var>
<var-name>datePattern</var-name>
<var-value>yyyy/MM/dd</var-value>
</var>
</field>
・・・
</form>
var-name |
var-value |
||
| startDate | 開始日付 | false | 日付範囲の開始の閾値となる日付。 datePatternまたはdatePatternStrictで指定した日付フォーマットと一致すること。 |
| endDate | 終了日付 | false | 日付範囲の終了の閾値となる日付。 datePatternまたはdatePatternStrictで指定した日付フォーマットと一致すること。 |
| datePattern | 日付パターン | false | 日付のパターンを示す文字列。Date型のフォーマットルールに従う。 |
| datePatternStrict | 日付のパターンを示す文字列。Date型のフォーマットルールに従う。 | false | 日付パターンのチェックを厳密に行うかどうか。 日付パターンがyyyy/MM/ddの場合、2001/1/1はエラーとなる。 datePatternが指定されている場合、datePatternで指定されたフォーマット が優先される。 |
bean - 検査対象のオブジェクトva - Validatorにより用意されたValidatorActionfield - フィールドオブジェクトerrors - アクションエラーvalidator - Validatorインスタンスrequest - HTTPリクエストtruepublic static boolean validateMultiField(Object bean, org.apache.commons.validator.ValidatorAction va, org.apache.commons.validator.Field field, org.apache.struts.action.ActionMessages errors, org.apache.commons.validator.Validator validator, javax.servlet.http.HttpServletRequest request)
MultiFieldValidator の実装クラスが 必要。実装したクラスは
validation.xml に設定を行う。validation.xml に必ず記述すること。MultiFieldValidator の実装例
public boolean validate(String value, String[] depends) {
int value0 = Integer.parseInt(value);
int value1 = Integer.parseInt(depends[0]);
int value2 = Integer.parseInt(depends[1]);
return (value1 <= value0 && value2 >= value0);
}
<form name="/validateMultiField">
<field property="value" depends="multiField">
<msg key="errors.multiField"
name="multiField"/>
<arg key="label.value" position="0" />
<arg key="label.value1" position="1" />
<arg key="label.value2" position="2" />
<var>
<var-name>fields</var-name>
<var-value>value1,value2</var-value>
</var>
<var>
<var-name>multiFieldValidator</var-name>
<var-value>sample.SampleMultiFieldValidator</var-value>
</var>
</field>
</form>
errors.multiField={0}は{1}から{2}の間の値を入力してください。
var-name |
var-value |
||
| fields | 検証に必要な他のフィールド名 | false | 複数のフィールドを指定する場合はフィールド名をカンマ区切りで 指定する。 |
| multiFieldValidator | MultiFieldValidator 実装クラス名 |
false | 複数フィールドの相関チェックを行う MultiFieldValidator 実装クラス名。 |
bean - 検査対象のオブジェクトva - Validatorにより用意されたValidatorActionfield - フィールドオブジェクトerrors - アクションエラーvalidator - Validatorインスタンスrequest - HTTPリクエストtruepublic static boolean validateArraysIndex(Object bean, org.apache.commons.validator.ValidatorAction va, org.apache.commons.validator.Field field, org.apache.struts.action.ActionMessages errors, org.apache.commons.validator.Validator validator, javax.servlet.http.HttpServletRequest request)
配列・コレクション型のフォームの要素をすべて検証し、発生した インデックス情報を ActionMessageに追加する。
実行されるサブメソッドの引数の型、順序は、このメソッドと 一致している必要がある。
Fieldのproperty属性にはJXPathIndexedBeanWrapperImplの仕様に従い、
ネストしたプロパティ名を設定することが可能である。
bean - 検査対象のオブジェクトva - Strutsにより用意されたValidatorActionfield - フィールドオブジェクトerrors - アクションエラーvalidator - Validatorインスタンスrequest - HTTPリクエストtrueprotected static org.apache.struts.action.ActionForm getActionForm(javax.servlet.http.HttpServletRequest request)
request - HTTPリクエストprotected static Class[] getParamClass(org.apache.commons.validator.ValidatorAction va)
va - Strutsにより用意されたValidatorActionprotected static Method getMethod(org.apache.commons.validator.ValidatorAction va, Class[] paramClass)
va - Strutsにより用意されたValidatorActionparamClass - 引数クラス配列protected static boolean isValid(Object result)
result - 結果オブジェクトtrueprotected static org.apache.commons.validator.Field getArrayIndexField(org.apache.commons.validator.Field field,
int pos)
field - 置換元フィールドオブジェクトpos - 走査中のインデックスprotected static String replaceIndexString(String arg, int pos)
argの値が##INDEXの時、走査中のインデックス値に 置換する
このメソッドはアクションフォームを対象としているため フォーム以外で、流用を行なうことを推奨しない。arg - ActionMessageの置換元キー情報pos - 走査中のインデックスprotected static int getByteLength(String value, String encoding)
value - バイト列長を取得する対象の文字列encoding - 文字エンコーディングpublic static String getHankakuKanaList()
public static String getZenkakuKanaList()
Copyright © 2014. All Rights Reserved.