You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by "Ellingson, David" <Da...@NielsenMedia.com> on 2004/06/15 22:49:42 UTC

LookupDispatchAction and Form validation

I am trying to implement a LookupDispatchAction class, and I'm not sure if
I'm trying to use Form validation in an unintended manner.

I see that the LookupDispatchAction class is designed to handle multiple
methods, but I do not see a corresponding way to handle multiple
validations.  As the value of the "parameter" attribute is available from
within the ActionForm.validate() method , it seems like I could somehow use
this to determine how to validate the form.  However, that would require me
to hardcode against the value from the html page/Resource file.

1)  Is there a way to perform validation based on the method being
performed?
2)  If not, is there a reason for this restriction?
3)  Am I supposed to create separate Action and Form classes in this
situation?


Thanks,
Dave 

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: LookupDispatchAction and Form validation + DispatchAction

Posted by Mark Lowe <ma...@boxstuff.com>.
Another way is to check which dispatch action is being activated and  
then run validation or not depending on which action is being run.

e.g.

/foo.do?method=save

mapping.getParameter() return the name of the parameter used to  
dispatch with. In this case "method"

request.getParameter(mapping.getParameter()) returns the value in the  
parameter map for the dispatch in this case "save"

you can then check if in this is a dispatchaction you wish to validate  
and go from there.

You can call super.validate() to use validations in the validation.xml  
file, although I have a personal preference to just use action form and  
validate using java (old struts 1.0) rather than use validator  
framework as I think it has greater clarity than using the validator.

I originally learnt this here posted by  Haroon Rafique
http://raibledesigns.com/wiki/Wiki.jsp?page=ValidatorDispatchAction

		ActionErrors errors = new ActionErrors();
		String parameter = mapping.getParameter();
		
		if(parameter == null) {
				return null;
		}
		
		/* we only need to validate when the save method is called */
		if(parameter != null) {
			String name = request.getParameter(parameter);
			String message = Resources.getMessage(request,"button.save");
			
			if(name == null || !name.equals(message)) {
				return null;
			}
			
		}

		//rest of the validations here 	

The reference provides a means of using the validator framework, which  
I just cant be bothered with anymore as IMO overriding the validate  
method is a lot clearer in terms of design what the action form is for,  
and when you need to validate uploads or other more complex validations  
everything is in the same place. The disadvantages of what I  do is  
that you don't have the javascript generated for you, and validation is  
harder to palm off on a site builder (this would depend on who in your  
team deals with this stuff). There are other advantages to using action  
forms over dynaaction forms that go beyond the scope of this response.

Mark

On 16 Jun 2004, at 03:40, Niall Pemberton wrote:

> DynaValidatorForm has been refactored slightly to make it easier to  
> override
> the key to use for the validator plugin (available in the nightlies  
> and will
> be in next release of Struts). If you extend DynaValidatorForm and  
> override
> the getValidationKey() method maybe you could use combination of the  
> form
> and method name for the validator plugin rules.
>
> For an example of this look at DynaValidatorActionForm:
>
> http://cvs.apache.org/viewcvs.cgi/jakarta-struts/src/share/org/apache/ 
> struts/validator/
>
> Niall
>
> ----- Original Message -----
> From: "Josh Holtzman" <jh...@americandatacompany.com>
> To: "'Struts Users Mailing List'" <us...@struts.apache.org>
> Sent: Tuesday, June 15, 2004 10:18 PM
> Subject: RE: LookupDispatchAction and Form validation + DispatchAction
>
>
>> David,
>>
>> I too am having a similar concern, albeit, with the DispatchAction  
>> class.
>>
>> I am currently have a form that is backed by a DynaActionForm and
> validation
>> occurs through the Validator pluggin.
>>
>> When binding the validation routine to the action by specifying
>> "validate='true'" in my Action configuration (within the  
>> struts-config.xml
>> file) I believe it will run my validation against all methods called
> within
>> the DispatchAction class for this action.  In my situation, I only  
>> want
> the
>> validation to be performed on 2 of the 6 methods within my  
>> DispatchAction
>> class.
>>
>> Is there a way to do this while still using the Validator Pluggin and  
>> a
>> DynaActionForm?
>>
>> Here are some alternatives I have devised:
>> 1.  Create 1 DispatchAction class to handle the two methods with
> validation,
>> and 1 for all other methods.
>>
>> 2.  Do not use the Validator pluggin, and perform validation within  
>> the
>> DispatchAction class only when the specific methods are called.
>>
>> I don't like either of these options very much (particularly number 2)
> since
>> they require a significant increase in maintenance.
>>
>> Any suggestions would be greatly appreciated.
>>
>> Thanks.
>>
>>
>> Josh Holtzman
>>
>>
>>
>>
>>
>>
>>
>> AMERICAN DATA COMPANY
>>
>> Developing and Supporting your Online Applications
>>
>>
>>
>> jholtzman@americandatacompany.com
>>
>> Voice: (310) 470-1257
>>
>> Fax:    (310) 362-8454
>>
>>
>>
>> Sun Microsystems iForce Partner
>>
>>
>> -----Original Message-----
>> From: Ellingson, David [mailto:David.Ellingson@NielsenMedia.com]
>> Sent: Tuesday, June 15, 2004 1:50 PM
>> To: 'user@struts.apache.org'
>> Subject: LookupDispatchAction and Form validation
>>
>> I am trying to implement a LookupDispatchAction class, and I'm not  
>> sure if
>> I'm trying to use Form validation in an unintended manner.
>>
>> I see that the LookupDispatchAction class is designed to handle  
>> multiple
>> methods, but I do not see a corresponding way to handle multiple
>> validations.  As the value of the "parameter" attribute is available  
>> from
>> within the ActionForm.validate() method , it seems like I could  
>> somehow
> use
>> this to determine how to validate the form.  However, that would  
>> require
> me
>> to hardcode against the value from the html page/Resource file.
>>
>> 1)  Is there a way to perform validation based on the method being
>> performed?
>> 2)  If not, is there a reason for this restriction?
>> 3)  Am I supposed to create separate Action and Form classes in this
>> situation?
>>
>>
>> Thanks,
>> Dave
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>> For additional commands, e-mail: user-help@struts.apache.org
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
>> For additional commands, e-mail: user-help@struts.apache.org
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: LookupDispatchAction and Form validation + DispatchAction

Posted by Niall Pemberton <ni...@blueyonder.co.uk>.
DynaValidatorForm has been refactored slightly to make it easier to override
the key to use for the validator plugin (available in the nightlies and will
be in next release of Struts). If you extend DynaValidatorForm and override
the getValidationKey() method maybe you could use combination of the form
and method name for the validator plugin rules.

For an example of this look at DynaValidatorActionForm:

http://cvs.apache.org/viewcvs.cgi/jakarta-struts/src/share/org/apache/struts/validator/

Niall

----- Original Message ----- 
From: "Josh Holtzman" <jh...@americandatacompany.com>
To: "'Struts Users Mailing List'" <us...@struts.apache.org>
Sent: Tuesday, June 15, 2004 10:18 PM
Subject: RE: LookupDispatchAction and Form validation + DispatchAction


> David,
>
> I too am having a similar concern, albeit, with the DispatchAction class.
>
> I am currently have a form that is backed by a DynaActionForm and
validation
> occurs through the Validator pluggin.
>
> When binding the validation routine to the action by specifying
> "validate='true'" in my Action configuration (within the struts-config.xml
> file) I believe it will run my validation against all methods called
within
> the DispatchAction class for this action.  In my situation, I only want
the
> validation to be performed on 2 of the 6 methods within my DispatchAction
> class.
>
> Is there a way to do this while still using the Validator Pluggin and a
> DynaActionForm?
>
> Here are some alternatives I have devised:
> 1.  Create 1 DispatchAction class to handle the two methods with
validation,
> and 1 for all other methods.
>
> 2.  Do not use the Validator pluggin, and perform validation within the
> DispatchAction class only when the specific methods are called.
>
> I don't like either of these options very much (particularly number 2)
since
> they require a significant increase in maintenance.
>
> Any suggestions would be greatly appreciated.
>
> Thanks.
>
>
> Josh Holtzman
>
>
>
>
>
>
>
> AMERICAN DATA COMPANY
>
> Developing and Supporting your Online Applications
>
>
>
> jholtzman@americandatacompany.com
>
> Voice: (310) 470-1257
>
> Fax:    (310) 362-8454
>
>
>
> Sun Microsystems iForce Partner
>
>
> -----Original Message-----
> From: Ellingson, David [mailto:David.Ellingson@NielsenMedia.com]
> Sent: Tuesday, June 15, 2004 1:50 PM
> To: 'user@struts.apache.org'
> Subject: LookupDispatchAction and Form validation
>
> I am trying to implement a LookupDispatchAction class, and I'm not sure if
> I'm trying to use Form validation in an unintended manner.
>
> I see that the LookupDispatchAction class is designed to handle multiple
> methods, but I do not see a corresponding way to handle multiple
> validations.  As the value of the "parameter" attribute is available from
> within the ActionForm.validate() method , it seems like I could somehow
use
> this to determine how to validate the form.  However, that would require
me
> to hardcode against the value from the html page/Resource file.
>
> 1)  Is there a way to perform validation based on the method being
> performed?
> 2)  If not, is there a reason for this restriction?
> 3)  Am I supposed to create separate Action and Form classes in this
> situation?
>
>
> Thanks,
> Dave
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


RE: LookupDispatchAction and Form validation + DispatchAction

Posted by Josh Holtzman <jh...@americandatacompany.com>.
David,

I too am having a similar concern, albeit, with the DispatchAction class.

I am currently have a form that is backed by a DynaActionForm and validation
occurs through the Validator pluggin.

When binding the validation routine to the action by specifying
"validate='true'" in my Action configuration (within the struts-config.xml
file) I believe it will run my validation against all methods called within
the DispatchAction class for this action.  In my situation, I only want the
validation to be performed on 2 of the 6 methods within my DispatchAction
class.

Is there a way to do this while still using the Validator Pluggin and a
DynaActionForm?

Here are some alternatives I have devised:
1.  Create 1 DispatchAction class to handle the two methods with validation,
and 1 for all other methods.

2.  Do not use the Validator pluggin, and perform validation within the
DispatchAction class only when the specific methods are called.

I don't like either of these options very much (particularly number 2) since
they require a significant increase in maintenance. 

Any suggestions would be greatly appreciated.

Thanks.


Josh Holtzman

 

 

 

AMERICAN DATA COMPANY

Developing and Supporting your Online Applications

 

jholtzman@americandatacompany.com

Voice: (310) 470-1257

Fax:    (310) 362-8454

 

Sun Microsystems iForce Partner


-----Original Message-----
From: Ellingson, David [mailto:David.Ellingson@NielsenMedia.com] 
Sent: Tuesday, June 15, 2004 1:50 PM
To: 'user@struts.apache.org'
Subject: LookupDispatchAction and Form validation

I am trying to implement a LookupDispatchAction class, and I'm not sure if
I'm trying to use Form validation in an unintended manner.

I see that the LookupDispatchAction class is designed to handle multiple
methods, but I do not see a corresponding way to handle multiple
validations.  As the value of the "parameter" attribute is available from
within the ActionForm.validate() method , it seems like I could somehow use
this to determine how to validate the form.  However, that would require me
to hardcode against the value from the html page/Resource file.

1)  Is there a way to perform validation based on the method being
performed?
2)  If not, is there a reason for this restriction?
3)  Am I supposed to create separate Action and Form classes in this
situation?


Thanks,
Dave 

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org