كيف يمكنني التحقق من صحة تاريخ باستخدام مزيج من الحقول باستخدام مدقق الدعامات

StackOverflow https://stackoverflow.com/questions/4096901

  •  28-09-2019
  •  | 
  •  

سؤال

إذا كان لدي 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>

في محقق الدعامات ، يمكنني أن أفعل شيئًا كهذا

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

ولكن كيف يمكنني التحقق من ذلك اليوم+الشهر+السنة هو تاريخ صالح؟ بما في ذلك فبراير وسنوات القفز؟

هل كانت مفيدة؟

المحلول

رؤية وثائق الدعامات الدعامات دليل التحقق ابحث عن المثال التالي

Comparing Two Fields

هذا مثال على كيف يمكنك مقارنة حقلين لمعرفة ما إذا كان لهما نفس القيمة. مثال جيد على ذلك هو عندما تقوم بالتحقق من صحة المستخدم الذي يقوم بتغيير كلمة المرور الخاصة به وهناك حقل كلمة المرور الرئيسي وحقل التأكيد.

<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;}

أعتقد أنك قد تكون أساسًا لمقارنة الحقول الثلاثة والتحقق منها والتي تشكل تاريخًا صحيحًا معًا

حظا طيبا وفقك الله.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top