後で使えるかもしれないので、メモしておく。
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>