You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Jorge Rodríguez (JIRA)" <ji...@apache.org> on 2006/05/03 00:31:21 UTC

[jira] Created: (STR-2854) mask validator error

mask validator error
--------------------

         Key: STR-2854
         URL: http://issues.apache.org/struts/browse/STR-2854
     Project: Struts Action 1
        Type: Bug

  Components: Core  
    Versions: 1.2.7    
 Environment: Windows XP, Weblogic 8.1 SP5
    Reporter: Jorge Rodríguez
    Priority: Critical


I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an integer data type, so, i need to check it.  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 

<field property="txtAnio" depends="mask,validwhen">
   <msg name="mask" key="errors.invalid"/>
        <arg position="0" key="Año" resource="false"/>
             <var>
                 <var-name>mask</var-name>
                 <var-value>${numeros}</var-value>
             </var>
        <var>
           <var-name>test</var-name>
           <var-value>(((rdSelector==0) and (*this* >0 )) or (rdSelector==1))</var-value>
        </var>
  </field>
where:
${numeros} = ^[0-9]*$
rdSelector is my radio  button  field
txtAnio is a year textfield.

I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):

public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {

        String mask = field.getVarValue("mask");
        String value = null;
        if (isString(bean)) {
            value = (String) bean;
        } else {
            value = ValidatorUtils.getValueAsString(bean, field.getProperty());
        }
        try {
            if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
                && !GenericValidator.matchRegexp(value, mask)) {
                errors.add(field.getKey(),
                    Resources.getActionMessage(validator, request, va, field));
                return false;
            } else {
                return true;
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return true;
    }

The problem I found is in the second if:   
 if (!GenericValidator.isBlankOrNull(value)  && ......

this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does, 
the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated) and the second part of that  if never executes because of the && operator so, the Regular expression  is never checked.. so it is almost right, but  fails with blank spaces ..

do you have any options to solve it ?,  
Ineed to change the struts.jar ?,  I checked the same class in struts 1.2.9 and the problem remains.

Thanks for your help ..

		  



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/struts/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


[jira] Updated: (STR-2854) mask validator error

Posted by "Jorge Rodríguez (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/struts/browse/STR-2854?page=all ]

Jorge Rodríguez updated STR-2854:
---------------------------------

    Description: 
I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an integer data type, so, i need to check it.  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 

<field property="txtAnio" depends="mask,validwhen">
   <msg name="mask" key="errors.invalid"/>
        <arg position="0" key="Año" resource="false"/>
             <var>
                 <var-name>mask</var-name>
                 <var-value>${numeros}</var-value>
             </var>
        <var>
           <var-name>test</var-name>
           <var-value>(((rdSelector==0) and (*this* >0 )) or (rdSelector==1))</var-value>
        </var>
  </field>

where:
${numeros} = ^[0-9]*$
rdSelector is my radio  button  field
txtAnio is a year textfield.

I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):

public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {

        String mask = field.getVarValue("mask");
        String value = null;
        if (isString(bean)) {
            value = (String) bean;
        } else {
            value = ValidatorUtils.getValueAsString(bean, field.getProperty());
        }
        try {
            if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
                && !GenericValidator.matchRegexp(value, mask)) {
                errors.add(field.getKey(),
                    Resources.getActionMessage(validator, request, va, field));
                return false;
            } else {
                return true;
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return true;
    }

The problem I found is in the second if:   
 if (!GenericValidator.isBlankOrNull(value)  && ......

this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does, 
the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated) and the second part of that  if never executes because of the && operator so, the Regular expression  is never checked..   It is almost right, but  fails with blank spaces ..

do you have any options to solve it ?,  
Ineed to change the struts.jar ?,  I checked the same class in struts 1.2.9 and the problem remains.

Thanks for your help ..

		  



  was:
I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an integer data type, so, i need to check it.  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 

<field property="txtAnio" depends="mask,validwhen">
   <msg name="mask" key="errors.invalid"/>
        <arg position="0" key="Año" resource="false"/>
             <var>
                 <var-name>mask</var-name>
                 <var-value>${numeros}</var-value>
             </var>
        <var>
           <var-name>test</var-name>
           <var-value>(((rdSelector==0) and (*this* >0 )) or (rdSelector==1))</var-value>
        </var>
  </field>
where:
${numeros} = ^[0-9]*$
rdSelector is my radio  button  field
txtAnio is a year textfield.

I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):

public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {

        String mask = field.getVarValue("mask");
        String value = null;
        if (isString(bean)) {
            value = (String) bean;
        } else {
            value = ValidatorUtils.getValueAsString(bean, field.getProperty());
        }
        try {
            if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
                && !GenericValidator.matchRegexp(value, mask)) {
                errors.add(field.getKey(),
                    Resources.getActionMessage(validator, request, va, field));
                return false;
            } else {
                return true;
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return true;
    }

The problem I found is in the second if:   
 if (!GenericValidator.isBlankOrNull(value)  && ......

this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does, 
the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated) and the second part of that  if never executes because of the && operator so, the Regular expression  is never checked.. so it is almost right, but  fails with blank spaces ..

do you have any options to solve it ?,  
Ineed to change the struts.jar ?,  I checked the same class in struts 1.2.9 and the problem remains.

Thanks for your help ..

		  




> mask validator error
> --------------------
>
>          Key: STR-2854
>          URL: http://issues.apache.org/struts/browse/STR-2854
>      Project: Struts Action 1
>         Type: Bug

>   Components: Core
>     Versions: 1.2.7
>  Environment: Windows XP, Weblogic 8.1 SP5
>     Reporter: Jorge Rodríguez
>     Priority: Critical

>
> I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
> For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an integer data type, so, i need to check it.  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 
> <field property="txtAnio" depends="mask,validwhen">
>    <msg name="mask" key="errors.invalid"/>
>         <arg position="0" key="Año" resource="false"/>
>              <var>
>                  <var-name>mask</var-name>
>                  <var-value>${numeros}</var-value>
>              </var>
>         <var>
>            <var-name>test</var-name>
>            <var-value>(((rdSelector==0) and (*this* >0 )) or (rdSelector==1))</var-value>
>         </var>
>   </field>
> where:
> ${numeros} = ^[0-9]*$
> rdSelector is my radio  button  field
> txtAnio is a year textfield.
> I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):
> public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {
>         String mask = field.getVarValue("mask");
>         String value = null;
>         if (isString(bean)) {
>             value = (String) bean;
>         } else {
>             value = ValidatorUtils.getValueAsString(bean, field.getProperty());
>         }
>         try {
>             if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
>                 && !GenericValidator.matchRegexp(value, mask)) {
>                 errors.add(field.getKey(),
>                     Resources.getActionMessage(validator, request, va, field));
>                 return false;
>             } else {
>                 return true;
>             }
>         } catch (Exception e) {
>             log.error(e.getMessage(), e);
>         }
>         return true;
>     }
> The problem I found is in the second if:   
>  if (!GenericValidator.isBlankOrNull(value)  && ......
> this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does, 
> the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated) and the second part of that  if never executes because of the && operator so, the Regular expression  is never checked..   It is almost right, but  fails with blank spaces ..
> do you have any options to solve it ?,  
> Ineed to change the struts.jar ?,  I checked the same class in struts 1.2.9 and the problem remains.
> Thanks for your help ..
> 		  

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/struts/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


[jira] Resolved: (STR-2854) mask validator error

Posted by "Don Brown (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/struts/browse/STR-2854?page=all ]
     
Don Brown resolved STR-2854:
----------------------------

    Fix Version: 1.3.3
     Resolution: Fixed
      Assign To: Don Brown

I think it is a valid change to allow strings with just spaces, as your regex might allow for that.  I made the change, so please close the ticket if you can verify.

> mask validator error
> --------------------
>
>          Key: STR-2854
>          URL: http://issues.apache.org/struts/browse/STR-2854
>      Project: Struts Action 1
>         Type: Bug

>   Components: Core
>     Versions: 1.2.7
>  Environment: Windows XP, Weblogic 8.1 SP5
>     Reporter: Jorge Rodríguez
>     Assignee: Don Brown
>     Priority: Critical
>      Fix For: 1.3.3

>
> I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
> For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an string with a date format (dd/mm/yyyy), so, i need to check it (optional fields with a special format. For that reason, I can't use the "required" rule).  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 
> <field property="txtDate" depends="mask,validwhen">
>    <msg name="mask" key="errors.invalid"/>
>         <arg position="0" key="Año" resource="false"/>
>              <var>
>                  <var-name>mask</var-name>
>                  <var-value>${formatDate}</var-value>
>              </var>
>         <var>
>            <var-name>test</var-name>
>            <var-value>(((rdSelector==0) and (*this* !=null )) or (rdSelector==1))</var-value>
>         </var>
>   </field>
> where:
> ${formatDate} = ^[0-9][0-9][/][0-9][0-9][/][0-9][0-9][0-9][0-9]$
> rdSelector is my radio  button  field
> txtDate  is a date textfield.
> I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):
> public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {
>         String mask = field.getVarValue("mask");
>         String value = null;
>         if (isString(bean)) {
>             value = (String) bean;
>         } else {
>             value = ValidatorUtils.getValueAsString(bean, field.getProperty());
>         }
>         try {
>             if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
>                 && !GenericValidator.matchRegexp(value, mask)) {
>                 errors.add(field.getKey(),
>                     Resources.getActionMessage(validator, request, va, field));
>                 return false;
>             } else {
>                 return true;
>             }
>         } catch (Exception e) {
>             log.error(e.getMessage(), e);
>         }
>         return true;
>     }
> The problem I found is in the second if:   
>  if (!GenericValidator.isBlankOrNull(value)  && ......
> this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does,  the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated), and the second condition never executes because of the && operator, so, the Regular expression  is never checked..  
> I think , the if statement should be something like this ...
>   if (value != null && value.length()>0
>                 && !GenericValidator.matchRegexp(value, mask)) {
>          
> it is almost the same as the original if, but the difference is that it  also includes strings with only
> blank spaces,  and in this case  the validator returns false just as it should be .. 
> have you seen any problem like this?,   can be fixed this problem in new releases? or there are some other solutions to solve it ?
> 		  
> Thanks for your help.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/struts/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


[jira] Resolved: (STR-2854) mask validator error

Posted by "Don Brown (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/struts/browse/STR-2854?page=all ]
     
Don Brown resolved STR-2854:
----------------------------

    Fix Version: 1.3.3
     Resolution: Fixed
      Assign To: Don Brown

I think it is a valid change to allow strings with just spaces, as your regex might allow for that.  I made the change, so please close the ticket if you can verify.

> mask validator error
> --------------------
>
>          Key: STR-2854
>          URL: http://issues.apache.org/struts/browse/STR-2854
>      Project: Struts Action 1
>         Type: Bug

>   Components: Core
>     Versions: 1.2.7
>  Environment: Windows XP, Weblogic 8.1 SP5
>     Reporter: Jorge Rodríguez
>     Assignee: Don Brown
>     Priority: Critical
>      Fix For: 1.3.3

>
> I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
> For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an string with a date format (dd/mm/yyyy), so, i need to check it (optional fields with a special format. For that reason, I can't use the "required" rule).  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 
> <field property="txtDate" depends="mask,validwhen">
>    <msg name="mask" key="errors.invalid"/>
>         <arg position="0" key="Año" resource="false"/>
>              <var>
>                  <var-name>mask</var-name>
>                  <var-value>${formatDate}</var-value>
>              </var>
>         <var>
>            <var-name>test</var-name>
>            <var-value>(((rdSelector==0) and (*this* !=null )) or (rdSelector==1))</var-value>
>         </var>
>   </field>
> where:
> ${formatDate} = ^[0-9][0-9][/][0-9][0-9][/][0-9][0-9][0-9][0-9]$
> rdSelector is my radio  button  field
> txtDate  is a date textfield.
> I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):
> public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {
>         String mask = field.getVarValue("mask");
>         String value = null;
>         if (isString(bean)) {
>             value = (String) bean;
>         } else {
>             value = ValidatorUtils.getValueAsString(bean, field.getProperty());
>         }
>         try {
>             if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
>                 && !GenericValidator.matchRegexp(value, mask)) {
>                 errors.add(field.getKey(),
>                     Resources.getActionMessage(validator, request, va, field));
>                 return false;
>             } else {
>                 return true;
>             }
>         } catch (Exception e) {
>             log.error(e.getMessage(), e);
>         }
>         return true;
>     }
> The problem I found is in the second if:   
>  if (!GenericValidator.isBlankOrNull(value)  && ......
> this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does,  the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated), and the second condition never executes because of the && operator, so, the Regular expression  is never checked..  
> I think , the if statement should be something like this ...
>   if (value != null && value.length()>0
>                 && !GenericValidator.matchRegexp(value, mask)) {
>          
> it is almost the same as the original if, but the difference is that it  also includes strings with only
> blank spaces,  and in this case  the validator returns false just as it should be .. 
> have you seen any problem like this?,   can be fixed this problem in new releases? or there are some other solutions to solve it ?
> 		  
> Thanks for your help.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/struts/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


[jira] Closed: (STR-2854) mask validator error

Posted by "Jorge Rodríguez (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/struts/browse/STR-2854?page=all ]
     
Jorge Rodríguez closed STR-2854:
--------------------------------


Thanks for your help, I Hope see this change included in  the next release.

> mask validator error
> --------------------
>
>          Key: STR-2854
>          URL: http://issues.apache.org/struts/browse/STR-2854
>      Project: Struts Action 1
>         Type: Bug

>   Components: Core
>     Versions: 1.2.7
>  Environment: Windows XP, Weblogic 8.1 SP5
>     Reporter: Jorge Rodríguez
>     Assignee: Don Brown
>     Priority: Critical
>      Fix For: 1.3.3

>
> I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
> For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an string with a date format (dd/mm/yyyy), so, i need to check it (optional fields with a special format. For that reason, I can't use the "required" rule).  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 
> <field property="txtDate" depends="mask,validwhen">
>    <msg name="mask" key="errors.invalid"/>
>         <arg position="0" key="Año" resource="false"/>
>              <var>
>                  <var-name>mask</var-name>
>                  <var-value>${formatDate}</var-value>
>              </var>
>         <var>
>            <var-name>test</var-name>
>            <var-value>(((rdSelector==0) and (*this* !=null )) or (rdSelector==1))</var-value>
>         </var>
>   </field>
> where:
> ${formatDate} = ^[0-9][0-9][/][0-9][0-9][/][0-9][0-9][0-9][0-9]$
> rdSelector is my radio  button  field
> txtDate  is a date textfield.
> I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):
> public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {
>         String mask = field.getVarValue("mask");
>         String value = null;
>         if (isString(bean)) {
>             value = (String) bean;
>         } else {
>             value = ValidatorUtils.getValueAsString(bean, field.getProperty());
>         }
>         try {
>             if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
>                 && !GenericValidator.matchRegexp(value, mask)) {
>                 errors.add(field.getKey(),
>                     Resources.getActionMessage(validator, request, va, field));
>                 return false;
>             } else {
>                 return true;
>             }
>         } catch (Exception e) {
>             log.error(e.getMessage(), e);
>         }
>         return true;
>     }
> The problem I found is in the second if:   
>  if (!GenericValidator.isBlankOrNull(value)  && ......
> this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does,  the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated), and the second condition never executes because of the && operator, so, the Regular expression  is never checked..  
> I think , the if statement should be something like this ...
>   if (value != null && value.length()>0
>                 && !GenericValidator.matchRegexp(value, mask)) {
>          
> it is almost the same as the original if, but the difference is that it  also includes strings with only
> blank spaces,  and in this case  the validator returns false just as it should be .. 
> have you seen any problem like this?,   can be fixed this problem in new releases? or there are some other solutions to solve it ?
> 		  
> Thanks for your help.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/struts/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


[jira] Updated: (STR-2854) mask validator error

Posted by "Jorge Rodríguez (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/struts/browse/STR-2854?page=all ]

Jorge Rodríguez updated STR-2854:
---------------------------------

    Description: 
I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an string with a date format (dd/mm/yyyy), so, i need to check it (optional fields with a special format. For that reason, I can't use the "required" rule).  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 

<field property="txtDate" depends="mask,validwhen">
   <msg name="mask" key="errors.invalid"/>
        <arg position="0" key="Año" resource="false"/>
             <var>
                 <var-name>mask</var-name>
                 <var-value>${formatDate}</var-value>
             </var>
        <var>
           <var-name>test</var-name>
           <var-value>(((rdSelector==0) and (*this* !=null )) or (rdSelector==1))</var-value>
        </var>
  </field>

where:
${formatDate} = ^[0-9][0-9][/][0-9][0-9][/][0-9][0-9][0-9][0-9]$
rdSelector is my radio  button  field
txtDate  is a date textfield.

I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):

public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {

        String mask = field.getVarValue("mask");
        String value = null;
        if (isString(bean)) {
            value = (String) bean;
        } else {
            value = ValidatorUtils.getValueAsString(bean, field.getProperty());
        }
        try {
            if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
                && !GenericValidator.matchRegexp(value, mask)) {
                errors.add(field.getKey(),
                    Resources.getActionMessage(validator, request, va, field));
                return false;
            } else {
                return true;
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return true;
    }

The problem I found is in the second if:   
 if (!GenericValidator.isBlankOrNull(value)  && ......

this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does,  the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated), and the second condition never executes because of the && operator, so, the Regular expression  is never checked..  

I think , the if statement should be something like this ...

  if (value != null && value.length()>0
                && !GenericValidator.matchRegexp(value, mask)) {
         
it is almost the same as the original if, but the difference is that it  also includes strings with only
blank spaces,  and in this case  the validator returns false just as it should be .. 


have you seen any problem like this?,   can be fixed this problem in new releases? or there are some other solutions to solve it ?
		  
Thanks for your help.



  was:
I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an string with a date format (dd/mm/yyyy), so, i need to check it (optional fields with a special format. For that reason, I can't use the "required" rule).  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 

<field property="txtDate" depends="mask,validwhen">
   <msg name="mask" key="errors.invalid"/>
        <arg position="0" key="Año" resource="false"/>
             <var>
                 <var-name>mask</var-name>
                 <var-value>${formatDate}</var-value>
             </var>
        <var>
           <var-name>test</var-name>
           <var-value>(((rdSelector==0) and (*this* >0 )) or (rdSelector==1))</var-value>
        </var>
  </field>

where:
${formatDate} = ^[0-9][0-9][/][0-9][0-9][/][0-9][0-9][0-9][0-9]$
rdSelector is my radio  button  field
txtDate  is a date textfield.

I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):

public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {

        String mask = field.getVarValue("mask");
        String value = null;
        if (isString(bean)) {
            value = (String) bean;
        } else {
            value = ValidatorUtils.getValueAsString(bean, field.getProperty());
        }
        try {
            if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
                && !GenericValidator.matchRegexp(value, mask)) {
                errors.add(field.getKey(),
                    Resources.getActionMessage(validator, request, va, field));
                return false;
            } else {
                return true;
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return true;
    }

The problem I found is in the second if:   
 if (!GenericValidator.isBlankOrNull(value)  && ......

this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does,  the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated), and the second condition never executes because of the && operator, so, the Regular expression  is never checked..  

I think , the if statement should be something like this ...

  if (value != null && value.length()>0
                && !GenericValidator.matchRegexp(value, mask)) {
         
it is almost the same as the original if, but the difference is that it  also includes strings with only
blank spaces,  and in this case  the validator returns false just as it should be .. 


have you seen any problem like this?,   can be fixed this problem in new releases? or there are some other solutions to solve it ?
		  
Thanks for your help.




> mask validator error
> --------------------
>
>          Key: STR-2854
>          URL: http://issues.apache.org/struts/browse/STR-2854
>      Project: Struts Action 1
>         Type: Bug

>   Components: Core
>     Versions: 1.2.7
>  Environment: Windows XP, Weblogic 8.1 SP5
>     Reporter: Jorge Rodríguez
>     Priority: Critical

>
> I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
> For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an string with a date format (dd/mm/yyyy), so, i need to check it (optional fields with a special format. For that reason, I can't use the "required" rule).  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 
> <field property="txtDate" depends="mask,validwhen">
>    <msg name="mask" key="errors.invalid"/>
>         <arg position="0" key="Año" resource="false"/>
>              <var>
>                  <var-name>mask</var-name>
>                  <var-value>${formatDate}</var-value>
>              </var>
>         <var>
>            <var-name>test</var-name>
>            <var-value>(((rdSelector==0) and (*this* !=null )) or (rdSelector==1))</var-value>
>         </var>
>   </field>
> where:
> ${formatDate} = ^[0-9][0-9][/][0-9][0-9][/][0-9][0-9][0-9][0-9]$
> rdSelector is my radio  button  field
> txtDate  is a date textfield.
> I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):
> public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {
>         String mask = field.getVarValue("mask");
>         String value = null;
>         if (isString(bean)) {
>             value = (String) bean;
>         } else {
>             value = ValidatorUtils.getValueAsString(bean, field.getProperty());
>         }
>         try {
>             if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
>                 && !GenericValidator.matchRegexp(value, mask)) {
>                 errors.add(field.getKey(),
>                     Resources.getActionMessage(validator, request, va, field));
>                 return false;
>             } else {
>                 return true;
>             }
>         } catch (Exception e) {
>             log.error(e.getMessage(), e);
>         }
>         return true;
>     }
> The problem I found is in the second if:   
>  if (!GenericValidator.isBlankOrNull(value)  && ......
> this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does,  the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated), and the second condition never executes because of the && operator, so, the Regular expression  is never checked..  
> I think , the if statement should be something like this ...
>   if (value != null && value.length()>0
>                 && !GenericValidator.matchRegexp(value, mask)) {
>          
> it is almost the same as the original if, but the difference is that it  also includes strings with only
> blank spaces,  and in this case  the validator returns false just as it should be .. 
> have you seen any problem like this?,   can be fixed this problem in new releases? or there are some other solutions to solve it ?
> 		  
> Thanks for your help.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/struts/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


[jira] Closed: (STR-2854) mask validator error

Posted by "Jorge Rodríguez (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/struts/browse/STR-2854?page=all ]
     
Jorge Rodríguez closed STR-2854:
--------------------------------


Thanks for your help, I Hope see this change included in  the next release.

> mask validator error
> --------------------
>
>          Key: STR-2854
>          URL: http://issues.apache.org/struts/browse/STR-2854
>      Project: Struts Action 1
>         Type: Bug

>   Components: Core
>     Versions: 1.2.7
>  Environment: Windows XP, Weblogic 8.1 SP5
>     Reporter: Jorge Rodríguez
>     Assignee: Don Brown
>     Priority: Critical
>      Fix For: 1.3.3

>
> I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
> For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an string with a date format (dd/mm/yyyy), so, i need to check it (optional fields with a special format. For that reason, I can't use the "required" rule).  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 
> <field property="txtDate" depends="mask,validwhen">
>    <msg name="mask" key="errors.invalid"/>
>         <arg position="0" key="Año" resource="false"/>
>              <var>
>                  <var-name>mask</var-name>
>                  <var-value>${formatDate}</var-value>
>              </var>
>         <var>
>            <var-name>test</var-name>
>            <var-value>(((rdSelector==0) and (*this* !=null )) or (rdSelector==1))</var-value>
>         </var>
>   </field>
> where:
> ${formatDate} = ^[0-9][0-9][/][0-9][0-9][/][0-9][0-9][0-9][0-9]$
> rdSelector is my radio  button  field
> txtDate  is a date textfield.
> I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):
> public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {
>         String mask = field.getVarValue("mask");
>         String value = null;
>         if (isString(bean)) {
>             value = (String) bean;
>         } else {
>             value = ValidatorUtils.getValueAsString(bean, field.getProperty());
>         }
>         try {
>             if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
>                 && !GenericValidator.matchRegexp(value, mask)) {
>                 errors.add(field.getKey(),
>                     Resources.getActionMessage(validator, request, va, field));
>                 return false;
>             } else {
>                 return true;
>             }
>         } catch (Exception e) {
>             log.error(e.getMessage(), e);
>         }
>         return true;
>     }
> The problem I found is in the second if:   
>  if (!GenericValidator.isBlankOrNull(value)  && ......
> this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does,  the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated), and the second condition never executes because of the && operator, so, the Regular expression  is never checked..  
> I think , the if statement should be something like this ...
>   if (value != null && value.length()>0
>                 && !GenericValidator.matchRegexp(value, mask)) {
>          
> it is almost the same as the original if, but the difference is that it  also includes strings with only
> blank spaces,  and in this case  the validator returns false just as it should be .. 
> have you seen any problem like this?,   can be fixed this problem in new releases? or there are some other solutions to solve it ?
> 		  
> Thanks for your help.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/struts/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


[jira] Updated: (STR-2854) mask validator error

Posted by "Jorge Rodríguez (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/struts/browse/STR-2854?page=all ]

Jorge Rodríguez updated STR-2854:
---------------------------------

    Description: 
I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an string with a date format (dd/mm/yyyy), so, i need to check it (optional fields with a special format. For that reason, I can't use the "required" rule).  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 

<field property="txtDate" depends="mask,validwhen">
   <msg name="mask" key="errors.invalid"/>
        <arg position="0" key="Año" resource="false"/>
             <var>
                 <var-name>mask</var-name>
                 <var-value>${formatDate}</var-value>
             </var>
        <var>
           <var-name>test</var-name>
           <var-value>(((rdSelector==0) and (*this* >0 )) or (rdSelector==1))</var-value>
        </var>
  </field>

where:
${formatDate} = ^[0-9][0-9][/][0-9][0-9][/][0-9][0-9][0-9][0-9]$
rdSelector is my radio  button  field
txtDate  is a date textfield.

I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):

public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {

        String mask = field.getVarValue("mask");
        String value = null;
        if (isString(bean)) {
            value = (String) bean;
        } else {
            value = ValidatorUtils.getValueAsString(bean, field.getProperty());
        }
        try {
            if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
                && !GenericValidator.matchRegexp(value, mask)) {
                errors.add(field.getKey(),
                    Resources.getActionMessage(validator, request, va, field));
                return false;
            } else {
                return true;
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return true;
    }

The problem I found is in the second if:   
 if (!GenericValidator.isBlankOrNull(value)  && ......

this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does,  the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated), and the second condition never executes because of the && operator, so, the Regular expression  is never checked..  

I think , the if statement should be something like this ...

  if (value != null && value.length()>0
                && !GenericValidator.matchRegexp(value, mask)) {
         
it is almost the same as the original if, but the difference is that it  also includes strings with only
blank spaces,  and in this case  the validator returns false just as it should be .. 


have you seen any problem like this?,   can be fixed this problem in new releases? or there are some other solutions to solve it ?
		  
Thanks for your help.



  was:
I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an integer data type, so, i need to check it.  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 

<field property="txtAnio" depends="mask,validwhen">
   <msg name="mask" key="errors.invalid"/>
        <arg position="0" key="Año" resource="false"/>
             <var>
                 <var-name>mask</var-name>
                 <var-value>${numeros}</var-value>
             </var>
        <var>
           <var-name>test</var-name>
           <var-value>(((rdSelector==0) and (*this* >0 )) or (rdSelector==1))</var-value>
        </var>
  </field>

where:
${numeros} = ^[0-9]*$
rdSelector is my radio  button  field
txtAnio is a year textfield.

I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):

public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {

        String mask = field.getVarValue("mask");
        String value = null;
        if (isString(bean)) {
            value = (String) bean;
        } else {
            value = ValidatorUtils.getValueAsString(bean, field.getProperty());
        }
        try {
            if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
                && !GenericValidator.matchRegexp(value, mask)) {
                errors.add(field.getKey(),
                    Resources.getActionMessage(validator, request, va, field));
                return false;
            } else {
                return true;
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return true;
    }

The problem I found is in the second if:   
 if (!GenericValidator.isBlankOrNull(value)  && ......

this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does, 
the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated) and the second part of that  if never executes because of the && operator so, the Regular expression  is never checked..   It is almost right, but  fails with blank spaces ..

do you have any options to solve it ?,  
Ineed to change the struts.jar ?,  I checked the same class in struts 1.2.9 and the problem remains.

Thanks for your help ..

		  




> mask validator error
> --------------------
>
>          Key: STR-2854
>          URL: http://issues.apache.org/struts/browse/STR-2854
>      Project: Struts Action 1
>         Type: Bug

>   Components: Core
>     Versions: 1.2.7
>  Environment: Windows XP, Weblogic 8.1 SP5
>     Reporter: Jorge Rodríguez
>     Priority: Critical

>
> I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
> For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an string with a date format (dd/mm/yyyy), so, i need to check it (optional fields with a special format. For that reason, I can't use the "required" rule).  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 
> <field property="txtDate" depends="mask,validwhen">
>    <msg name="mask" key="errors.invalid"/>
>         <arg position="0" key="Año" resource="false"/>
>              <var>
>                  <var-name>mask</var-name>
>                  <var-value>${formatDate}</var-value>
>              </var>
>         <var>
>            <var-name>test</var-name>
>            <var-value>(((rdSelector==0) and (*this* >0 )) or (rdSelector==1))</var-value>
>         </var>
>   </field>
> where:
> ${formatDate} = ^[0-9][0-9][/][0-9][0-9][/][0-9][0-9][0-9][0-9]$
> rdSelector is my radio  button  field
> txtDate  is a date textfield.
> I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):
> public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {
>         String mask = field.getVarValue("mask");
>         String value = null;
>         if (isString(bean)) {
>             value = (String) bean;
>         } else {
>             value = ValidatorUtils.getValueAsString(bean, field.getProperty());
>         }
>         try {
>             if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
>                 && !GenericValidator.matchRegexp(value, mask)) {
>                 errors.add(field.getKey(),
>                     Resources.getActionMessage(validator, request, va, field));
>                 return false;
>             } else {
>                 return true;
>             }
>         } catch (Exception e) {
>             log.error(e.getMessage(), e);
>         }
>         return true;
>     }
> The problem I found is in the second if:   
>  if (!GenericValidator.isBlankOrNull(value)  && ......
> this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does,  the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated), and the second condition never executes because of the && operator, so, the Regular expression  is never checked..  
> I think , the if statement should be something like this ...
>   if (value != null && value.length()>0
>                 && !GenericValidator.matchRegexp(value, mask)) {
>          
> it is almost the same as the original if, but the difference is that it  also includes strings with only
> blank spaces,  and in this case  the validator returns false just as it should be .. 
> have you seen any problem like this?,   can be fixed this problem in new releases? or there are some other solutions to solve it ?
> 		  
> Thanks for your help.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/struts/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


[jira] Updated: (STR-2854) mask validator error

Posted by "Jorge Rodríguez (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/struts/browse/STR-2854?page=all ]

Jorge Rodríguez updated STR-2854:
---------------------------------

    Description: 
I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an integer data type, so, i need to check it.  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 

<field property="txtAnio" depends="mask,validwhen">
   <msg name="mask" key="errors.invalid"/>
        <arg position="0" key="Año" resource="false"/>
             <var>
                 <var-name>mask</var-name>
                 <var-value>${numeros}</var-value>
             </var>
        <var>
           <var-name>test</var-name>
           <var-value>(((rdSelector==0) and (*this* >0 )) or (rdSelector==1))</var-value>
        </var>
  </field>

where:
${numeros} = ^[0-9]*$
rdSelector is my radio  button  field
txtAnio is a year textfield.

I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):

public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {

        String mask = field.getVarValue("mask");
        String value = null;
        if (isString(bean)) {
            value = (String) bean;
        } else {
            value = ValidatorUtils.getValueAsString(bean, field.getProperty());
        }
        try {
            if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
                && !GenericValidator.matchRegexp(value, mask)) {
                errors.add(field.getKey(),
                    Resources.getActionMessage(validator, request, va, field));
                return false;
            } else {
                return true;
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return true;
    }

The problem I found is in the second if:   
 if (!GenericValidator.isBlankOrNull(value)  && ......

this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does, 
the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated) and the second part of that  if never executes because of the && operator so, the Regular expression  is never checked..   It is almost right, but  fails with blank spaces ..

do you have any options to solve it ?,  
Ineed to change the struts.jar ?,  I checked the same class in struts 1.2.9 and the problem remains.

Thanks for your help ..

		  



  was:
I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an integer data type, so, i need to check it.  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 

<field property="txtAnio" depends="mask,validwhen">
   <msg name="mask" key="errors.invalid"/>
        <arg position="0" key="Año" resource="false"/>
             <var>
                 <var-name>mask</var-name>
                 <var-value>${numeros}</var-value>
             </var>
        <var>
           <var-name>test</var-name>
           <var-value>(((rdSelector==0) and (*this* >0 )) or (rdSelector==1))</var-value>
        </var>
  </field>
where:
${numeros} = ^[0-9]*$
rdSelector is my radio  button  field
txtAnio is a year textfield.

I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):

public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {

        String mask = field.getVarValue("mask");
        String value = null;
        if (isString(bean)) {
            value = (String) bean;
        } else {
            value = ValidatorUtils.getValueAsString(bean, field.getProperty());
        }
        try {
            if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
                && !GenericValidator.matchRegexp(value, mask)) {
                errors.add(field.getKey(),
                    Resources.getActionMessage(validator, request, va, field));
                return false;
            } else {
                return true;
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return true;
    }

The problem I found is in the second if:   
 if (!GenericValidator.isBlankOrNull(value)  && ......

this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does, 
the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated) and the second part of that  if never executes because of the && operator so, the Regular expression  is never checked.. so it is almost right, but  fails with blank spaces ..

do you have any options to solve it ?,  
Ineed to change the struts.jar ?,  I checked the same class in struts 1.2.9 and the problem remains.

Thanks for your help ..

		  




> mask validator error
> --------------------
>
>          Key: STR-2854
>          URL: http://issues.apache.org/struts/browse/STR-2854
>      Project: Struts Action 1
>         Type: Bug

>   Components: Core
>     Versions: 1.2.7
>  Environment: Windows XP, Weblogic 8.1 SP5
>     Reporter: Jorge Rodríguez
>     Priority: Critical

>
> I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
> For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an integer data type, so, i need to check it.  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 
> <field property="txtAnio" depends="mask,validwhen">
>    <msg name="mask" key="errors.invalid"/>
>         <arg position="0" key="Año" resource="false"/>
>              <var>
>                  <var-name>mask</var-name>
>                  <var-value>${numeros}</var-value>
>              </var>
>         <var>
>            <var-name>test</var-name>
>            <var-value>(((rdSelector==0) and (*this* >0 )) or (rdSelector==1))</var-value>
>         </var>
>   </field>
> where:
> ${numeros} = ^[0-9]*$
> rdSelector is my radio  button  field
> txtAnio is a year textfield.
> I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):
> public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {
>         String mask = field.getVarValue("mask");
>         String value = null;
>         if (isString(bean)) {
>             value = (String) bean;
>         } else {
>             value = ValidatorUtils.getValueAsString(bean, field.getProperty());
>         }
>         try {
>             if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
>                 && !GenericValidator.matchRegexp(value, mask)) {
>                 errors.add(field.getKey(),
>                     Resources.getActionMessage(validator, request, va, field));
>                 return false;
>             } else {
>                 return true;
>             }
>         } catch (Exception e) {
>             log.error(e.getMessage(), e);
>         }
>         return true;
>     }
> The problem I found is in the second if:   
>  if (!GenericValidator.isBlankOrNull(value)  && ......
> this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does, 
> the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated) and the second part of that  if never executes because of the && operator so, the Regular expression  is never checked..   It is almost right, but  fails with blank spaces ..
> do you have any options to solve it ?,  
> Ineed to change the struts.jar ?,  I checked the same class in struts 1.2.9 and the problem remains.
> Thanks for your help ..
> 		  

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/struts/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


[jira] Updated: (STR-2854) mask validator error

Posted by "Jorge Rodríguez (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/struts/browse/STR-2854?page=all ]

Jorge Rodríguez updated STR-2854:
---------------------------------

    Description: 
I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an string with a date format (dd/mm/yyyy), so, i need to check it (optional fields with a special format. For that reason, I can't use the "required" rule).  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 

<field property="txtDate" depends="mask,validwhen">
   <msg name="mask" key="errors.invalid"/>
        <arg position="0" key="Año" resource="false"/>
             <var>
                 <var-name>mask</var-name>
                 <var-value>${formatDate}</var-value>
             </var>
        <var>
           <var-name>test</var-name>
           <var-value>(((rdSelector==0) and (*this* >0 )) or (rdSelector==1))</var-value>
        </var>
  </field>

where:
${formatDate} = ^[0-9][0-9][/][0-9][0-9][/][0-9][0-9][0-9][0-9]$
rdSelector is my radio  button  field
txtDate  is a date textfield.

I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):

public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {

        String mask = field.getVarValue("mask");
        String value = null;
        if (isString(bean)) {
            value = (String) bean;
        } else {
            value = ValidatorUtils.getValueAsString(bean, field.getProperty());
        }
        try {
            if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
                && !GenericValidator.matchRegexp(value, mask)) {
                errors.add(field.getKey(),
                    Resources.getActionMessage(validator, request, va, field));
                return false;
            } else {
                return true;
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return true;
    }

The problem I found is in the second if:   
 if (!GenericValidator.isBlankOrNull(value)  && ......

this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does,  the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated), and the second condition never executes because of the && operator, so, the Regular expression  is never checked..  

I think , the if statement should be something like this ...

  if (value != null && value.length()>0
                && !GenericValidator.matchRegexp(value, mask)) {
         
it is almost the same as the original if, but the difference is that it  also includes strings with only
blank spaces,  and in this case  the validator returns false just as it should be .. 


have you seen any problem like this?,   can be fixed this problem in new releases? or there are some other solutions to solve it ?
		  
Thanks for your help.



  was:
I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an integer data type, so, i need to check it.  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 

<field property="txtAnio" depends="mask,validwhen">
   <msg name="mask" key="errors.invalid"/>
        <arg position="0" key="Año" resource="false"/>
             <var>
                 <var-name>mask</var-name>
                 <var-value>${numeros}</var-value>
             </var>
        <var>
           <var-name>test</var-name>
           <var-value>(((rdSelector==0) and (*this* >0 )) or (rdSelector==1))</var-value>
        </var>
  </field>

where:
${numeros} = ^[0-9]*$
rdSelector is my radio  button  field
txtAnio is a year textfield.

I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):

public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {

        String mask = field.getVarValue("mask");
        String value = null;
        if (isString(bean)) {
            value = (String) bean;
        } else {
            value = ValidatorUtils.getValueAsString(bean, field.getProperty());
        }
        try {
            if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
                && !GenericValidator.matchRegexp(value, mask)) {
                errors.add(field.getKey(),
                    Resources.getActionMessage(validator, request, va, field));
                return false;
            } else {
                return true;
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return true;
    }

The problem I found is in the second if:   
 if (!GenericValidator.isBlankOrNull(value)  && ......

this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does, 
the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated) and the second part of that  if never executes because of the && operator so, the Regular expression  is never checked..   It is almost right, but  fails with blank spaces ..

do you have any options to solve it ?,  
Ineed to change the struts.jar ?,  I checked the same class in struts 1.2.9 and the problem remains.

Thanks for your help ..

		  




> mask validator error
> --------------------
>
>          Key: STR-2854
>          URL: http://issues.apache.org/struts/browse/STR-2854
>      Project: Struts Action 1
>         Type: Bug

>   Components: Core
>     Versions: 1.2.7
>  Environment: Windows XP, Weblogic 8.1 SP5
>     Reporter: Jorge Rodríguez
>     Priority: Critical

>
> I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
> For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an string with a date format (dd/mm/yyyy), so, i need to check it (optional fields with a special format. For that reason, I can't use the "required" rule).  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 
> <field property="txtDate" depends="mask,validwhen">
>    <msg name="mask" key="errors.invalid"/>
>         <arg position="0" key="Año" resource="false"/>
>              <var>
>                  <var-name>mask</var-name>
>                  <var-value>${formatDate}</var-value>
>              </var>
>         <var>
>            <var-name>test</var-name>
>            <var-value>(((rdSelector==0) and (*this* >0 )) or (rdSelector==1))</var-value>
>         </var>
>   </field>
> where:
> ${formatDate} = ^[0-9][0-9][/][0-9][0-9][/][0-9][0-9][0-9][0-9]$
> rdSelector is my radio  button  field
> txtDate  is a date textfield.
> I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):
> public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {
>         String mask = field.getVarValue("mask");
>         String value = null;
>         if (isString(bean)) {
>             value = (String) bean;
>         } else {
>             value = ValidatorUtils.getValueAsString(bean, field.getProperty());
>         }
>         try {
>             if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
>                 && !GenericValidator.matchRegexp(value, mask)) {
>                 errors.add(field.getKey(),
>                     Resources.getActionMessage(validator, request, va, field));
>                 return false;
>             } else {
>                 return true;
>             }
>         } catch (Exception e) {
>             log.error(e.getMessage(), e);
>         }
>         return true;
>     }
> The problem I found is in the second if:   
>  if (!GenericValidator.isBlankOrNull(value)  && ......
> this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does,  the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated), and the second condition never executes because of the && operator, so, the Regular expression  is never checked..  
> I think , the if statement should be something like this ...
>   if (value != null && value.length()>0
>                 && !GenericValidator.matchRegexp(value, mask)) {
>          
> it is almost the same as the original if, but the difference is that it  also includes strings with only
> blank spaces,  and in this case  the validator returns false just as it should be .. 
> have you seen any problem like this?,   can be fixed this problem in new releases? or there are some other solutions to solve it ?
> 		  
> Thanks for your help.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/struts/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


[jira] Updated: (STR-2854) mask validator error

Posted by "Jorge Rodríguez (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/struts/browse/STR-2854?page=all ]

Jorge Rodríguez updated STR-2854:
---------------------------------

    Description: 
I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an string with a date format (dd/mm/yyyy), so, i need to check it (optional fields with a special format. For that reason, I can't use the "required" rule).  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 

<field property="txtDate" depends="mask,validwhen">
   <msg name="mask" key="errors.invalid"/>
        <arg position="0" key="Año" resource="false"/>
             <var>
                 <var-name>mask</var-name>
                 <var-value>${formatDate}</var-value>
             </var>
        <var>
           <var-name>test</var-name>
           <var-value>(((rdSelector==0) and (*this* !=null )) or (rdSelector==1))</var-value>
        </var>
  </field>

where:
${formatDate} = ^[0-9][0-9][/][0-9][0-9][/][0-9][0-9][0-9][0-9]$
rdSelector is my radio  button  field
txtDate  is a date textfield.

I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):

public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {

        String mask = field.getVarValue("mask");
        String value = null;
        if (isString(bean)) {
            value = (String) bean;
        } else {
            value = ValidatorUtils.getValueAsString(bean, field.getProperty());
        }
        try {
            if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
                && !GenericValidator.matchRegexp(value, mask)) {
                errors.add(field.getKey(),
                    Resources.getActionMessage(validator, request, va, field));
                return false;
            } else {
                return true;
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return true;
    }

The problem I found is in the second if:   
 if (!GenericValidator.isBlankOrNull(value)  && ......

this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does,  the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated), and the second condition never executes because of the && operator, so, the Regular expression  is never checked..  

I think , the if statement should be something like this ...

  if (value != null && value.length()>0
                && !GenericValidator.matchRegexp(value, mask)) {
         
it is almost the same as the original if, but the difference is that it  also includes strings with only
blank spaces,  and in this case  the validator returns false just as it should be .. 


have you seen any problem like this?,   can be fixed this problem in new releases? or there are some other solutions to solve it ?
		  
Thanks for your help.



  was:
I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an string with a date format (dd/mm/yyyy), so, i need to check it (optional fields with a special format. For that reason, I can't use the "required" rule).  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 

<field property="txtDate" depends="mask,validwhen">
   <msg name="mask" key="errors.invalid"/>
        <arg position="0" key="Año" resource="false"/>
             <var>
                 <var-name>mask</var-name>
                 <var-value>${formatDate}</var-value>
             </var>
        <var>
           <var-name>test</var-name>
           <var-value>(((rdSelector==0) and (*this* >0 )) or (rdSelector==1))</var-value>
        </var>
  </field>

where:
${formatDate} = ^[0-9][0-9][/][0-9][0-9][/][0-9][0-9][0-9][0-9]$
rdSelector is my radio  button  field
txtDate  is a date textfield.

I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):

public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {

        String mask = field.getVarValue("mask");
        String value = null;
        if (isString(bean)) {
            value = (String) bean;
        } else {
            value = ValidatorUtils.getValueAsString(bean, field.getProperty());
        }
        try {
            if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
                && !GenericValidator.matchRegexp(value, mask)) {
                errors.add(field.getKey(),
                    Resources.getActionMessage(validator, request, va, field));
                return false;
            } else {
                return true;
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return true;
    }

The problem I found is in the second if:   
 if (!GenericValidator.isBlankOrNull(value)  && ......

this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does,  the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated), and the second condition never executes because of the && operator, so, the Regular expression  is never checked..  

I think , the if statement should be something like this ...

  if (value != null && value.length()>0
                && !GenericValidator.matchRegexp(value, mask)) {
         
it is almost the same as the original if, but the difference is that it  also includes strings with only
blank spaces,  and in this case  the validator returns false just as it should be .. 


have you seen any problem like this?,   can be fixed this problem in new releases? or there are some other solutions to solve it ?
		  
Thanks for your help.




> mask validator error
> --------------------
>
>          Key: STR-2854
>          URL: http://issues.apache.org/struts/browse/STR-2854
>      Project: Struts Action 1
>         Type: Bug

>   Components: Core
>     Versions: 1.2.7
>  Environment: Windows XP, Weblogic 8.1 SP5
>     Reporter: Jorge Rodríguez
>     Priority: Critical

>
> I have a problem with the mask validator when it is used without  others validators such as "required"  in struts 1.2.7. 
> For example,  I have a field which  depends of a radio button selecction (requiredif in previous versions). In this case I'm using the "validwhen" and the "mask" validators because that field is  an string with a date format (dd/mm/yyyy), so, i need to check it (optional fields with a special format. For that reason, I can't use the "required" rule).  The problem is when it is filled in with only blank spaces. In this case, the "mask" validator doesn't work. 
> <field property="txtDate" depends="mask,validwhen">
>    <msg name="mask" key="errors.invalid"/>
>         <arg position="0" key="Año" resource="false"/>
>              <var>
>                  <var-name>mask</var-name>
>                  <var-value>${formatDate}</var-value>
>              </var>
>         <var>
>            <var-name>test</var-name>
>            <var-value>(((rdSelector==0) and (*this* !=null )) or (rdSelector==1))</var-value>
>         </var>
>   </field>
> where:
> ${formatDate} = ^[0-9][0-9][/][0-9][0-9][/][0-9][0-9][0-9][0-9]$
> rdSelector is my radio  button  field
> txtDate  is a date textfield.
> I think, the problem is in the validateMask method of the FieldChecks class (org.apache.struts.validator):
> public static boolean validateMask(Object bean,ValidatorAction va, Field field,ActionMessages errors, Validator validator, HttpServletRequest request) {
>         String mask = field.getVarValue("mask");
>         String value = null;
>         if (isString(bean)) {
>             value = (String) bean;
>         } else {
>             value = ValidatorUtils.getValueAsString(bean, field.getProperty());
>         }
>         try {
>             if (!GenericValidator.isBlankOrNull(value) // <b>THIS IS THE PROBLEM</b>
>                 && !GenericValidator.matchRegexp(value, mask)) {
>                 errors.add(field.getKey(),
>                     Resources.getActionMessage(validator, request, va, field));
>                 return false;
>             } else {
>                 return true;
>             }
>         } catch (Exception e) {
>             log.error(e.getMessage(), e);
>         }
>         return true;
>     }
> The problem I found is in the second if:   
>  if (!GenericValidator.isBlankOrNull(value)  && ......
> this means that if the field is empty, null or with only blank spaces as the isBlankOrNull method  does,  the  field is not considered as invalid (the if block  doesn't execute, so no errors are generated), and the second condition never executes because of the && operator, so, the Regular expression  is never checked..  
> I think , the if statement should be something like this ...
>   if (value != null && value.length()>0
>                 && !GenericValidator.matchRegexp(value, mask)) {
>          
> it is almost the same as the original if, but the difference is that it  also includes strings with only
> blank spaces,  and in this case  the validator returns false just as it should be .. 
> have you seen any problem like this?,   can be fixed this problem in new releases? or there are some other solutions to solve it ?
> 		  
> Thanks for your help.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/struts/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira