struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sandeep Takhar <>
Subject Re: Dynamic DynaActionForms?
Date Wed, 11 Jun 2003 12:40:03 GMT
Why not have the form capture all the info.

Have the administrator control a switch to suggest
which radio boxes should appear and if they only
choose one then don't show any radio boxes.

After filling in the address info have a next button
and take them to the additional info about credit etc.

At this point you can validate according to the radio
button (which will be auto-populated according to how
the user selected).

I have always found it better to add all the
attributes instead of getting too fancy on the

I believe Ted Husted mentions the same in his book. 
This is more like a "Domain DTO" pattern for action

--- David Tobey <> wrote:
> Hello all:
> I'm writing what (I hope) will be a
> highly-configurable generic shopping 
> cart program using (we hope) Struts. My issue is I
> want to be able to 
> modify the elements of various forms on the fly, and
> I'm struggling with 
> the best way to do this. For example, I have defined
> an order form as a 
> subclass of DynaActionForm, like so:
> <form-beans>
>   <form-bean name="orderForm" 
> type="org.netpush.cart.customer.order.OrderForm">
>    <form-property name="billingFirstName"
> type="java.lang.String"/>
>    <form-property name="billingLastName"
> type="java.lang.String"/>
>    <form-property name="billingOrganization"
> type="java.lang.String"/>
>    <form-property name="billingAddress1"
> type="java.lang.String"/>
>    <form-property name="billingAddress2"
> type="java.lang.String"/>
>    <form-property name="billingCity"
> type="java.lang.String"/>
>    <form-property name="billingState"
> type="java.lang.String"/>
>    <form-property name="billingPostalCode"
> type="java.lang.String"/>
> ...
>    <form-property name="creditCardNumber"
> type="java.lang.String"/>
>    <form-property name="creditCardType"
> type="java.lang.String"/>
>    <form-property name="creditCardExpDate"
> type="java.lang.String"/>
>    <form-property name="creditCardName"
> type="java.lang.String"/>
> ...
> </form-bean>
> Within this form I would like to be able to swap out
> different fields, 
> depending on if the shopping cart is configured in
> certain ways. For 
> example if instead of capturing credit card
> information, the store 
> administrator wants to capture a purchase order
> number and an account id 
> number.
> The administrator must be able to change settings
> like this in a 
> separate web-based application talking to a database
> (not by logging on 
> to the server and modifying the config files!). I
> have no problem 
> reading the settings from the database and exposing
> them to the view and 
> to the controller. The issue is what's the best to
> dynamically change 
> the fields in this DynaActionForm given the database
> settings.
> My thoughts are revolving around two options:
> 1. Subclass the RequestProcessor. I could create
> mutilple ActionForms, 
> one for address info, one for credit card info, and
> one for PO info, and 
> then revamp the RequestProcessor to accept more than
> one Form per 
> action, and populate and validate each one in turn.
> (During validation, 
> I could check the settings to find out which of the
> optional forms must 
> pass validation.)
> 2. Write functions to dynamically modify the
> struts-config.xml file and 
> reload the settings whenever the administrator
> changes what information 
> they want to collect. The problem with this is I
> have to worry about 
> file locking, and interruptions in service as the
> configuration is 
> reloaded. (Has anyone written tools to modify the
> config file through a 
> web application?)
> If anyone has come across or has any thoughts about
> the best way to 
> approach this sort of thing, I would be very
> grateful to hear what you 
> have to say.
> Many thanks,
> dave
> To unsubscribe, e-mail:
> For additional commands, e-mail:

Do you Yahoo!?
Yahoo! Calendar - Free online calendar with sync to Outlook(TM).

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message