--- Niall Pemberton <[EMAIL PROTECTED]> wrote: > Sorry this went to the wrong list, but anyway.... > > Looking at CVS there is a validateUrl() method in the Struts FieldChecks > class (added in version 1.15) - problem is it uses commons > GenericValidator > which has a static instance. > > What do you think about changing this to instantiate a UrlValidator if > any > configuration parameters have been enetered in validation.xml, otherwise > use > the GenericValidator?
Sounds ok to me but we need to define the variable names the method recognizes and will use in UrlValidator configuration. David > > Niall > > ----- Original Message ----- > From: "David Graham" <[EMAIL PROTECTED]> > To: "Struts Developers List" <[EMAIL PROTECTED]> > Sent: Thursday, April 01, 2004 7:30 PM > Subject: Re: Fw: UrlValidator() takes options - but how? > > > > The url validation was added to commons validator but, as you're > > discovering, Struts doesn't directly support it yet. Struts should > > provide a hook into this new commons validator feature with predefined > > configuration variables like those that have been suggested below > (just > > like how the maxlength validation uses a "maxlength" variable to > configure > > itself). > > > > Patches are always welcome! > > > > David > > > > --- Niall Pemberton <[EMAIL PROTECTED]> wrote: > > > 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 > === message truncated === __________________________________ Do you Yahoo!? Yahoo! Small Business $15K Web Design Giveaway http://promotions.yahoo.com/design_giveaway/ --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]