Hi,
        Although not using validator, I had similar problem
When using dispatch actions (different methods requires different
Validations).
So I enable always validation, but I wrote my custom validate method
In the ActionForm.
Now, if u want to use validator, first thing that comes to my mind
Would be to use validator for what all your methods have in common,
And then write a custom validate() method that checks which 'method'
Is going to be called, and depending on that you will validate or
Do nothing.

My 2 cents..

Regards
        marco

-----Original Message-----
From: Adam Hardy [mailto:[EMAIL PROTECTED] 
Sent: 31 March 2004 17:13
To: Struts Users Mailing List
Subject: Re: validator and dispatch action

I mean, try changing it in the code in your action when you want to 
validate, & change it back afterwards to its previous value when done. 
Is that what you tried?

String oldName = mapping.getName();
mapping.setName("widget-edit");
form.validate(mapping, request);
mapping.setName(oldName);



On 03/31/2004 05:52 PM Paul Barry wrote:
> The name of the action-mapping has to correspond to the name of the 
> form-bean.
> 
> Adam Hardy wrote:
> 
>> If I really wanted to stick with your set-up, I see a way it might be

>> possible, although I have not done this myself.
>>
>> Try changing the 'name' attribute of the mapping to the validation 
>> that you defined in the validation.xml, e.g. 'widget-update' or 
>> 'widget-edit' and then call the validate() method.
>>
>> My main worry is that ActionMapping may not like being changed, but
if 
>> so, you could instantiate a new one.
>>
>> Adam
>>
>> On 03/31/2004 05:18 PM Paul Barry wrote:
>>
>>> Hello Everyone,
>>>
>>> I am using the validator and dispatch actions and I am wonder what 
>>> the best way to do this is.  Consider that I have the following 
>>> method in a dispatch action:
>>>
>>> add    - populates collections for drop-down lists, forwards to jsp
page
>>> create - needs to do validation and store in database
>>> edit   - needs to populate form with the data to edit, forward to
jsp 
>>> page
>>> update - needs to do validation and update database
>>> delete - needs to delete a record from the database
>>>
>>> You can see how the validation would be different for these actions.

>>> Let's say this is a dispatch action related to administrating users.

>>> So for add, there would be no validation, it just gets the data need

>>> to build the form.  For create, there might be a password and verify

>>> password field that need to be validated, but update wouldn't have 
>>> those fields.  Edit and delete would have to have a parameter for
the 
>>> primary key of the record to edit or delete.
>>>
>>> Now I found something related at this link:
>>>
>>> http://nagoya.apache.org/wiki/apachewiki.cgi?ValidatorDispatchAction
>>>
>>> Which says to set validate to false in the struts-config.xml and
then 
>>> call validate method within each method of the dispatch action, like

>>> this:
>>>
>>> ActionErrors errors = new ActionErrors();
>>> errors = form.validate(mapping, request);
>>>
>>> // Report any errors we have discovered back to the original form
>>> if (!errors.isEmpty()) {
>>>     saveErrors(request, errors);
>>>     return  new ActionForward(mapping.getInput());
>>> }
>>>
>>> This seems like a really good solution to me, but there is one 
>>> problem.  How do you call a different set of validation rules, based

>>> on which method you are in?  Doesn't this need to be something like 
>>> this:
>>>
>>> edit() {
>>>     ActionErrors errors = new ActionErrors();
>>>     errors = form.validateEdit(mapping, request);
>>> }
>>>
>>> update() {
>>>     ActionErrors errors = new ActionErrors();
>>>     errors = form.validateUpdate(mapping, request);
>>> }
>>>
>>> Because the rules for validating edit and update are different.  You

>>> could define different action-mappings in your struts config for
each 
>>> dispatch method, and then a form in your validation.xml for each 
>>> action-mapping, where the form name is the same as the path property

>>> of the action-mapping, but doesn't this defeat the purpose of the 
>>> dispatch action?  Why not just have separate actions at that point?

>>> I think the answer is to just not use the dispatch action with the 
>>> validator, but I wanted to know if others had found a way to do it.
>>>
>>>
---------------------------------------------------------------------
>>> 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.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]

Reply via email to