Struts validation.xmlメモ
後で使えるかもしれないので、メモしておく。
mask
<constant> <!-- アスキー文字のみ --> <constant-name>MASK_ASCII_CHAR</constant-name> <constant-value>^[\x20-\x7E]*$</constant-value> </constant> <constant> <!-- 英数字のみ --> <constant-name>MASK_ALPHABET_AND_NUMBER</constant-name> <constant-value>^[0-9A-Za-z]*$</constant-value> </constant> <constant> <!-- 数字のみ --> <constant-name>MASK_NUMBER</constant-name> <constant-value>^\d+$</constant-value> </constant> <constant> <!-- 全角のみ --> <constant-name>MASK_ZENKAKU</constant-name> <constant-value>^[^\x20-\x7E]*$</constant-value> </constant> <constant> <!-- 全角カタカナのみ --> <constant-name>MASK_ZEN_KATAKANA</constant-name> <constant-value>^[ァ-ヶ・ーヽヾ]*$</constant-value> </constant> <constant> <!-- 郵便番号 --> <constant-name>MASK_ZIP_CODE</constant-name> <constant-value>^\d{3}-\d{4}$</constant-value> </constant> <constant> <!-- 電話番号 --> <constant-name>MASK_PHONE_NUMBER</constant-name> <constant-value>^\d{2,4}-\d{2,4}-\d{4}$</constant-value> </constant>
validwhen 条件付きの入力必須項目
ある項目が入力されたら、入力必須とする。requiredifの代わり。
errors.requiredWith={0}を指定する場合は、{1}を入力してください。 errors.requiredWithTwo={0}を指定する場合は、{1}と{2}を入力してください。 parts.field1=フィールド1の項目名 parts.field2=フィールド2の項目名 parts.field3=フィールド3の項目名
<field property="field1" depends="validwhen"> <msg name="validwhen" key="errors.requiredWith" /> <arg position="0" key="parts.field1" /> <arg position="1" name="validwhen" key="parts.field2" /> <var> <var-name>test</var-name> <var-value>((*this* == null) or (field2 != null))</var-value> </var> </field>
<field property="field1" depends="validwhen"> <msg name="validwhen" key="errors.requiredWithTwo" /> <arg position="0" key="parts.field1" /> <arg position="1" name="validwhen" key="parts.field2" /> <arg position="2" name="validwhen" key="parts.field3" /> <var> <var-name>test</var-name> <var-value>((*this* == null) or ((field2 != null) and (field3 != null)))</var-value> </var> </field>
validwhen 以前の値を変更してもらう場合
それまでの値と同じだったらエラーにする。
errors.noChange={0}が以前の値から変更されていません。 parts.newInput=新しい入力値の項目名
<field property="newInput" depends="validwhen"> <msg name="validwhen" key="errors.noChange" /> <arg position="0" key="parts.newInput" /> <var> <var-name>test</var-name> <var-value>((*this* == null) or (oldValue != *this*))</var-value> </var> </field>
validwhen パスワード変更画面
- 現在のパスワード
- 新しいパスワード
- 新しいパスワード(再入力)
という3つの入力項目がある画面
errors.newPasswordNoChange=新しいパスワードが現在のパスワードから変更されていません。 errors.wrongRetype=新しいパスワード(再入力)に誤りがあります。 parts.password=現在のパスワード parts.newPassword=新しいパスワード parts.newPasswordRetype=新しいパスワード(再入力)
<constant> <constant-name>MAX_LEN_PASSWORD</constant-name> <constant-value>適当に入れる</constant-value> </constant> <constant> <constant-name>MASK_PASSWORD</constant-name> <constant-value>適当に入れる</constant-value> </constant>
<form name="PasswordModifyForm"> <field property="password" depends="maxlength,mask"> <arg position="0" key="parts.password" /> <var> <var-name>maxlength</var-name> <var-value>${MAX_LEN_PASSWORD}</var-value> </var> <var> <var-name>mask</var-name> <var-value>${MASK_PASSWORD}</var-value> </var> </field> <field property="newPassword" depends="required,maxlength,mask,validwhen"> <msg name="validwhen" key="errors.newPasswordNoChange" /> <arg position="0" key="parts.newPassword" /> <var> <var-name>maxlength</var-name> <var-value>${MAX_LEN_PASSWORD}</var-value> </var> <var> <var-name>mask</var-name> <var-value>${MASK_PASSWORD}</var-value> </var> <var> <var-name>test</var-name> <var-value>((password == null) or (password != *this*))</var-value> </var> </field> <field property="newPasswordRetype" depends="required,maxlength,validwhen"> <msg name="validwhen" key="errors.wrongRetype" /> <arg position="0" key="parts.newPasswordRetype" /> <var> <var-name>maxlength</var-name> <var-value>${MAX_LEN_PASSWORD}</var-value> </var> <var> <var-name>test</var-name> <var-value>((newPassword == null) or (newPassword == *this*))</var-value> </var> </field> </form>