1

フォームに 3 つのテキスト フィールドがある場合、Struts バリデーターを使用して、3 つのフィールドすべての組み合わせが有効な日付を形成することを確認するにはどうすればよいですか。

例えば

<form action="/test">

  <input type=text name=day> 

  <select name=month>
  <option value=JAN>JAN</option>
  <option value=JAN>JAN</option>
  <option value=JAN>FEB</option>
     ---
    ---
  <option value=DEC>DEC</option>
 </select>

 <input type=text name=year> 

</form>

Strutsバリデーターでは、このようなことができます

 <field
                property="day"
                depends="required,mask">
                    <arg key="myForm.day"/>
                    <var>
                        <var-name>mask</var-name>
                        <var-value>^[0-9]*$</var-value>
                    </var>
            </field>         

しかし、日+月+年が有効な日付であることを確認するにはどうすればよいですか? 2月と閏年を含む?

4

1 に答える 1

1

Struts のドキュメントStruts Validator Guideを参照すると、次の例が見つかります。

Comparing Two Fields

これは、2 つのフィールドを比較して同じ値かどうかを確認する方法の例です。これの良い例は、パスワードを変更するユーザーを検証していて、メインのパスワード フィールドと確認フィールドがある場合です。

<validator name="twofields"
   classname="com.mysite.StrutsValidator"
   method="validateTwoFields"
   msg="errors.twofields"/>

<field property="password"
   depends="required,twofields">
      <arg position="0" key="typeForm.password.displayname"/>
      <var>
         <var-name>secondProperty</var-name>
         <var-value>password2</var-value>
      </var>

public static boolean validateTwoFields(
Object bean,
ValidatorAction va, 
Field field,
ActionErrors errors,
HttpServletRequest request, 
ServletContext application) {

String value = ValidatorUtils.getValueAsString(
    bean, 
    field.getProperty());
String sProperty2 = field.getVarValue("secondProperty");
String value2 = ValidatorUtils.getValueAsString(
    bean, 
    sProperty2);

if (!GenericValidator.isBlankOrNull(value)) {
   try {
      if (!value.equals(value2)) {
         errors.add(field.getKey(),
            Resources.getActionError(
                application,
                request,
                va,
                field));

         return false;
      }
   } catch (Exception e) {
         errors.add(field.getKey(),
            Resources.getActionError(
                application,
                request,
                va,
                field));
         return false;
   }
}

return true;}

一緒に正しい日付を形成する3つのフィールドを比較して検証するための基礎になると思います

幸運を。

于 2010-11-04T15:17:48.277 に答える