sending this again as it appears to have lost its way!

Sent: Thursday, April 01, 2004 5:09 PM


> The problem with GenericValidator is that it has a single instance of
> UrlValidator in a static variable, so you can't go changing its
> configuration every time a url is validated in your webapp as it wouldn't
be
> thread safe. In fact if you want the option to configure it on a field by
> field basis then you are going to need to create a new instance of the
> UrlValidator each time - or have some clever mechanism that caches a
> UrlValidator for each field -its a shame the ValidatorAction doesn't do
> that.
>
> Maybe modify FieldChecks.validateUrl() to check if any options/schemes
have
> been set (using <var>) - if they have then instantiate a new UrlValidator,
> otherwise use the default GenericValidator.isUrl().
>
> The other problem, which I usually forget is the javascript - if you allow
> the server side to be configured then maybe the  javascript should also
take
> those options into account (although the date validation only works with
the
> datePatternStrict option in javascript unless its changed in 1.2).
>
> Anyway my opinion is irrelevant as its the "powers that be" that you have
to
> convince to apply any patch you submit :-)
>
> Niall
>
>
> ----- Original Message ----- 
> From: "Adam Hardy" <[EMAIL PROTECTED]>
> To: "Struts Users Mailing List" <[EMAIL PROTECTED]>
> Sent: Thursday, April 01, 2004 3:24 PM
> Subject: Re: UrlValidator() takes options - but how?
>
>
> > Thanks for that Niall, you certainly know your stuff.
> >
> > I am thinking, if I change the UrlValidator in the source code, I could
> > submit a patch to allow FieldChecks to set the <var> values from
> > validation.xml.
> >
> > Currently, FieldChecks access UrlValidator via the GenericValidator:
> >
> > if (!GenericValidator.isBlankOrNull(value) &&
> >      !GenericValidator.isUrl(value)) {
> >
> > Should I change this to:
> >
> >       !GenericValidator.isUrl(value, allow2Slashes, noFragments,
> > allowAllSchems)) {
> >
> > and edit GenericValidator accordingly, to pass the options in to
> > UrlValidator.
> >
> > Is that a good idea?
> > Adam
> >
> >
> > On 04/01/2004 02:58 PM Niall Pemberton wrote:
> > > UrlValidator is not the class that is instantiated  by ValidatorAction
> > > because it doesn't know anything about Struts resources - the Struts
> > > FieldChecks.validateUrl() method calls commons GenericValidator which
> > > instantiates the UrlValidator.
> > >
> > > Rather than using the struts FieldChecks.validateUrl(), create you own
> > > version which instantiates the url validator and picks up <var> values
> to
> > > configure it. Something like:
> > >
> > >
> > > <field property="someUrl" depends="myUrlValidator">
> > >       <var><var-name>slashes</var-name>
> > >                 <var-value>true</var-value>
> > >       </var>
> > >       <var><var-name>fragments</var-name>
> > >                 <var-value>true</var-value>
> > >       </var>
> > > </field>
> > >
> > >    public static boolean validateUrl(Object bean,
> > >                                         ValidatorAction va, Field
field,
> > >                                         ActionMessages errors,
> > >                                         HttpServletRequest request) {
> > >
> > >         String value = null;
> > >         if (isString(bean)) {
> > >             value = (String) bean;
> > >         } else {
> > >             value = ValidatorUtils.getValueAsString(bean,
> > > field.getProperty());
> > >         }
> > >         int options = 0;
> > >
> > >         if ("true".equals(field.getVarValue("slashes")))
> > >              options += UrlValidator.ALLOW_2_SLASHES;
> > >
> > >         if ("true".equals(field.getVarValue("fragments")))
> > >              options += UrlValidator.ALLOW_2_SLASHES;
> > >
> > >         UrlValidator urlValidator = new UrlValidator(options);
> > >
> > >         if (!GenericValidator.isBlankOrNull(value) &&
> > > !urlValidator.isValid(value)) {
> > >             errors.add(field.getKey(),
> Resources.getActionMessage(request,
> > > va, field));
> > >             return false;
> > >         } else {
> > >             return true;
> > >         }
> > >     }
> > >
> > > ----- Original Message ----- 
> > > From: "Adam Hardy" <[EMAIL PROTECTED]>
> > > To: <[EMAIL PROTECTED]>
> > > Sent: Thursday, April 01, 2004 12:17 PM
> > > Subject: UrlValidator() takes options - but how?
> > >
> > >
> > >
> > >>In UrlValidator() in the validator package, one can set various
options
> > >>upon instantiation, such as ALLOW_2_SLASHES or NO_FRAGMENTS.
> > >>
> > >>However it appears from the code in
> > >>ValidatorAction.getValidationClassInstance() that I can't actually set
> > >>these at any point in the Validator framework so that they will be
> > >>picked up when run under struts.
> > >>
> > >>I think I'm looking in the right place in the code.
> > >>
> > >>I was hoping that there would be some method for configuring this via
> > >>validation.xml, but apparently not.
> > >>
> > >>Am I correct?
> > >>
> > >>Thanks
> > >>Adam
> > >>
> > >>-- 
> > >>struts 1.1 + tomcat 5.0.16 + java 1.4.2
> > >>Linux 2.4.20 Debian
> > >>
> > >>
> > >>---------------------------------------------------------------------
> > >>To unsubscribe, e-mail: [EMAIL PROTECTED]
> > >>For additional commands, e-mail: [EMAIL PROTECTED]
> > >>
> > >>
> > >>
> > >
> > >
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> > >
> >
> >
> > -- 
> > struts 1.2 + tomcat 5.0.19 + java 1.4.2
> > Linux 2.4.20 Debian
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> >
>



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

Reply via email to