struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Adam Hardy <ahardy.str...@cyberspaceroad.com>
Subject Re: validator and dispatch action
Date Wed, 31 Mar 2004 15:38:17 GMT
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: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
> 
> 


-- 
struts 1.1 + tomcat 5.0.16 + java 1.4.2
Linux 2.4.20 Debian


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


Mime
View raw message