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]