You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by "Day, Michael-IBM/TT" <Mi...@Nextel.com> on 2002/09/23 00:29:53 UTC

General Action classes question

Hopefully someone can help clear this question up.  I am trying to use a few DispatchActions for all Actions in my application.  

As an example, I have a Category data object.  All actions performed with this object directly are encompassed in the CategoryAction which extends DispatchAction.  I can use my CategoryAction class to display, insert, update, and delete a Category object.  Is this bad form?  I don't see a point in creating separate Actions for each "operation".

Assuming this practice is acceptable, I need to understand how I can apply the same principle to forms.  I have a registration form for new users.  There is a RegistrationAction class, which extends DispatchAction.  It currently has two methods--create() and update().  How can I configure this in struts-config.xml, and how do I get this to work with the DynaActionValidator form bean?

Thanks for the help.

__________________________________________________
Michael Blake Day
Nextel Communications, Inc.
email: michael.day@nextel.com
desk: 678.966.4792 

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


RE: General Action classes question

Posted by Robert Taylor <rt...@mulework.com>.
> Is this bad form? 
Michael, IMHO you've got the right idea.
I leverage DispatchAction and DynaActionValidator form
in a similar fashion, except I take it one more step.
I group them into areas of functionality that mirror my 
application. 

For example, my web application has the following sections:
store front, user account, product download, bug tracking,
forums, etc...

I have a DispatchAction for each area of functionality which
I call XXXXControllers. 

To go with each XXXXController I have a single DynaActionValidator
form. Validation is invoked based on the action mapping concatonated
with the operation name (/account/editAccount-saveChanges)

This greatly reduces the number of web tier classes you
have to create and maintain and makes the application components
more cohesive.


> Assuming this practice is acceptable, I need to understand how I 
> can apply the same principle to forms.  I have a registration 
> form for new users.  There is a RegistrationAction class, which 
> extends DispatchAction.  It currently has two methods--create() 
> and update().  How can I configure this in struts-config.xml, and 
> how do I get this to work with the DynaActionValidator form bean?

I created a base form bean class which extends DynaActionValidator. 
Each of the form beans defined in my struts-config.xml file have
this base class as the type attribute. For example:

<form-bean name="registrationForm"
           type="com.companyname.BaseForm"                
           dynamic="true">        
   <form-property name="firstName"                      
                  type="java.lang.String"/>        
   <form-property name="lastName"                      
                  type="java.lang.String"/>
   etc....
</form-bean>

In BaseForm, I overrode the validate() so that I passed in the
action mapping concatonated with the operation name. For exampe:

String path = mapping.getPath();
String operation = request.getParameter("method");
String validationKey = path + "-" + operation;

Validator validator = StrutsValidatorUtil
    			.initValidator(validationKey, this,
    			application, request, errors, page);


This uniquely identifies the validation routines defined
in my validation.xml. For example:

<form name="/account/editAccount-saveChanges">
            
<field    property="email"
   depends="required,email,maxlength">
   <arg0 key="form.account.email.displayName"/>
   <arg1 name="maxlength" key="${var:maxlength}" resource="false"/>
   <var>
     <var-name>maxlength</var-name>
     <var-value>255</var-value>
   </var>
</field>

etc...

</form>

 

HTH,

robert


> -----Original Message-----
> From: Day, Michael-IBM/TT [mailto:Michael.Day@Nextel.com]
> Sent: Sunday, September 22, 2002 6:30 PM
> To: struts-user@jakarta.apache.org
> Subject: General Action classes question
> 
> 
> Hopefully someone can help clear this question up.  I am trying 
> to use a few DispatchActions for all Actions in my application.  
> 
> As an example, I have a Category data object.  All actions 
> performed with this object directly are encompassed in the 
> CategoryAction which extends DispatchAction.  I can use my 
> CategoryAction class to display, insert, update, and delete a 
> Category object.  Is this bad form?  I don't see a point in 
> creating separate Actions for each "operation".
> 
> Assuming this practice is acceptable, I need to understand how I 
> can apply the same principle to forms.  I have a registration 
> form for new users.  There is a RegistrationAction class, which 
> extends DispatchAction.  It currently has two methods--create() 
> and update().  How can I configure this in struts-config.xml, and 
> how do I get this to work with the DynaActionValidator form bean?
> 
> Thanks for the help.
> 
> __________________________________________________
> Michael Blake Day
> Nextel Communications, Inc.
> email: michael.day@nextel.com
> desk: 678.966.4792 
> 
> --
> To unsubscribe, e-mail:   
> <ma...@jakarta.apache.org>
> For additional commands, e-mail: 
> <ma...@jakarta.apache.org>
> 

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>