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]