2010-11-04 6 views
1

Si j'ai 3 champs de texte sur un formulaire, comment puis-je utiliser le validateur struts pour vérifier qu'une combinaison des 3 champs doit former une date valide.Comment valider une date en utilisant une combinaison de champs à l'aide du validateur Struts

Par exemple

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

Dans Struts Validator je peux faire quelque chose comme ça

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

Mais comment puis-je vérifier ce jour + mois + année est une date valide? y compris les février et les années bissextiles?

Répondre

1

Voir la documentation Struts Struts Validator Guide trouver l'exemple suivant

Comparing Two Fields 

Ceci est un exemple de la façon dont vous pouvez comparer deux champs pour voir si elles ont la même valeur. Un bon exemple de ceci est quand vous validez un utilisateur changeant leur mot de passe et il y a le champ principal de mot de passe et un champ de confirmation.

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

Je pense que vous pourriez être une base pour comparer et valider vos trois champs qui forment ensemble une date correcte

Bonne chance.

Questions connexes