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.

-- 
Kris Schneider <mailto:[EMAIL PROTECTED]>
D.O.Tech       <http://www.dotech.com/>

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

Reply via email to