struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mike Foody <mike.fo...@archangelpartners.com>
Subject Re: validator and dispatch action
Date Wed, 31 Mar 2004 18:17:59 GMT
Agreed about it being mostly syntactical sugar. 

On the other hand I think defining multiple mappings for the same Action 
is extremely useful.  It allows you to group your functionality and 
easily access shared functionality, but also provide alternative 
validation and forwards without having work around it in the Action 
class.  It certainly isn't providing  anything you couldn't otherwise 
but from my perspective seems a cleaner solution.



Paul Barry wrote:

> You could do this same thing in Strust 1.1, except that you would need 
> the method parameter.  In struts 1.1, the links would be:
>
> /createSubscription.do?method=create
> /editSubscription.do?method=edit
> ...
>
> And with MappingDispatchAction they would be
>
> /createSubscription.do
> /editSubscription.do
> ...
>
> That's a litte bit nicer, but if you are going to go through the 
> trouble of defining an action-mapping for each method, why not just 
> skip the dispatch aciton altogether and have separate actions?  If you 
> keep all related actions in a package together, is it any harder to 
> manage?  I am talking about having a configuration like this:
>
> <action path="/createSubscription"
>           type="org.example.subscription.SubscriptionCreateAction">
>       <forward name="success" path="/editSubscription.jsp"/>
>   </action>
>
>   <action path="/editSubscription"
>           type="org.example.subscription.SubscriptionEditAction">
>       <forward name="success" path="/editSubscription.jsp"/>
>   </action>
>
>   <action path="/saveSubscription"
>           type="org.example.subscription.SubscriptionSaveAction"
>           name="subscriptionForm"
>           validate="true"
>           input="/editSubscription.jsp"
>           scope="request">
>       <forward name="success" path="/savedSubscription.jsp"/>
>   </action>
>
>   <action path="/deleteSubscription"
>           type="org.example.subscription.SubscriptionDeleteAction"
>           name="subscriptionForm"
>           scope="request"
>           input="/subscription.jsp">
>       <forward name="success" path="/deletedSubscription.jsp"/>
>   </action>
>
>   <action path="/listSubscriptions"
>           type="org.example.subscription.SubscriptionListAction">
>       <forward name="success" path="/subscriptionList.jsp"/>
>   </action>
>
>
> Mike Foody wrote:
>
>> If you're not opposed to using 1.2 the MappingDispatchAction will 
>> allow you to easily set up multiple action mappings, each capable of 
>> having their own ActionForm, validation, etc and then actually handle 
>> these all with a multiple methods in a single Action class. 
>> http://jakarta.apache.org/struts/api/index.html
>>
>> Mike
>>
>> 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
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> 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


Mime
View raw message