I've never done this before with apache bugzilla so let me know if I did Ok.
View bug number 22121.


-----Original Message-----
From: Rob Leland [mailto:[EMAIL PROTECTED] 
Sent: Monday, August 04, 2003 5:17 PM
To: Struts Users Mailing List
Subject: Re: Validator required not working with String[] multi-select

Please do file a bug report.

Thanks,

Rob

Bailey, Shane C. wrote:

>It sure appears that way from my code analysis.
>
>I JUST made it work though with a simple update of the commons source code.
>I guess I could look into submitting my update if they / anyone is
>interested in incorporating it in the commons code.
>
>
>I changed the org.apache.commons.validator.ValidatorUtil.getValueAsString()
>method from:
>
>  public static String getValueAsString(Object bean, String property) {
>      Object value = null;
>
>      try {
>         value = PropertyUtils.getProperty(bean, property);    
>      } catch (Exception e) {
>         log.error(e.getMessage(), e);
>      }
>      return (value != null ? value.toString() : null);        
>   }
>
>to:
>
>  public static String getValueAsString(Object bean, String property) {
>      Object value = null;
>
>      try {
>         value = PropertyUtils.getProperty(bean, property);    
>      } catch (Exception e) {
>         log.error(e.getMessage(), e);
>      }
>               //Special case, check if String[]
>        try
>        {
>           String[] valueArray = (String[])value; 
>                  if(valueArray==null || valueArray.length==0)
>                  {
>                               value = null;
>                  }
>        }
>        catch(ClassCastException cce)
>        {
>                       //Then it wasn't a String[]
>        }      
>      return (value != null ? value.toString() : null);        
>   }
>
>
>I guess, just to be safe the second catch could catch Exception.
>
>Anyway, it fixed my validation problem for String[] and doesn't appear to
>have broken and validations which worked before.
>
>
>
>
>-----Original Message-----
>From: Kris Schneider [mailto:[EMAIL PROTECTED] 
>Sent: Monday, August 04, 2003 3:52 PM
>To: Struts Users Mailing List
>Subject: Re: Validator required not working with String[] multi-select
>
>AFAIK, the standard "required" validator doesn't work with arrays. Or, if
it
>does, I wasted time writing a custom validator ;-). I'd be intersted to
hear
>if
>anyone really has used the "required" validator successfully for an array
>field.
>I suppose I should check to see if there's a bug/RFE for an array validator
>and
>submit it...
>
>Quoting "Bailey, Shane C." <[EMAIL PROTECTED]>:
>
>  
>
>>I sort of already sent this message to the list but I made a mistake
>>(didn't
>>proof read my message) so here it is again but corrected ...
>>
>>Validator "required" validation is NOT working for my String[] (in a
>>dynaform.  I have seen others on the list say it works for them.
>>
>>Anyone else experiencing the same problem? Possibly it is because I am
>>using
>>a multi-select?
>>
>>Basically, if nothing is selected then instead of null be sent back for
>>that
>>parameter I am getting a zero length String[]and it's toString() value is
>>"[Ljava.lang.String;@3cfaab" which is important because of the way the
>>validateRequired() method works...
>>
>>I looked at the source code (of my commons-validator.jar using jad).
>>Maybe I am using an older version of the commons-validator jar and this
>>    
>>
>was
>  
>
>>fixed or I am doing something else wrong?
>>
>>If so, where is the latest commons-validator.jar?
>>
>>Here is how my field is declared on the JSP:
>>
>><html:select property="roles" multiple="true" size="7">
>>  <html:options collection="<%=my.Const.ROLE_TYPES%>" 
>>      property="roleName"/>
>></html:select>
>>
>> 
>>
>>Here is how it is declared in the struts config:
>>
>><form-property name="roles" type="java.lang.String[]"/>
>>
>>
>>    
>>
>---------------------------------------------------------------------------
-
>  
>
>>
>>Struts source Code:
>>
>>    public static boolean validateRequired(Object bean,
>>                                           ValidatorAction va, Field
>>    
>>
>field,
>  
>
>>                                           ActionErrors errors,
>>                                           HttpServletRequest request) { 
>>
>>        String value = null;
>>
>>        if (isString(bean)) {
>>
>>            value = (String) bean;
>>
>>        } else {
>>
>>            value = ValidatorUtil.getValueAsString(bean,
>>                 field.getProperty());
>>
>>        }
>>
>>        if (GenericValidator.isBlankOrNull(value)) {
>>
>>            errors.add(field.getKey(),
>>
>>            Resources.getActionError(request, va, field));
>>
>>            return false;
>>
>>        } else {
>>
>>            return true;
>>
>>        }
>>
>> 
>>
>>    }
>>
>> 
>>
>> 
>>
>>Problem:
>>
>>ValidatorUtil.getValueAsString(bean, field.getProperty()) does a
>>    
>>
>toString()
>  
>
>>on the value and a toString() on a String[] 
>>which isn't null it is some String like "[Ljava.lang.String;@3cfaab"  and
>>so
>>then isBlankOrNull() is checking for null OR value.trim().length==0 and so
>>neither is true and so validation passes.
>>    
>>
>
>  
>


-- 
-----
Rob Leland (703-525-3580)


Choose a job you love, and you will never have to work a day of your life.
 
-Confucius.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to