On Thu, 22 Nov 2001, box wrote:

> Date: Thu, 22 Nov 2001 19:36:25 +0100
> From: box <[EMAIL PROTECTED]>
> Reply-To: Struts Developers List <[EMAIL PROTECTED]>,
>      box <[EMAIL PROTECTED]>
> To: [EMAIL PROTECTED]
> Subject: General model question ?
>
> Hi everybody,
>
>  I am new to struts, but I find them very usefull.
>
>  There is one question that bothers me.
>
>  Wy is ActionForm a class not an interface ?
>
>  I have got my own application data model and I would just need  to
> implement
>  the ActionForm to update/input the data via html forms.
>
>  But it's not possible - I must inherit the struts structure, so I have to
>  create ActionForm with get, set methods and after all copy all properties
>  between my data model and the corresponding ActionForm.
>
>  Am I missing something ?
>

ActionForm is a class in order to *prevent* exactly the behavior you
propose :-).

The purpose of an ActionForm is to contain the server-side state of the
input fields, for the following reasons:

* So that you can validate them (you don't want invalid data
  being scribbled into your application data objects by Struts's
  automatic bean population)

* So that you can reproduce the user's input data in case of an
  error such as an invalid integer (you would use a String in the
  ActionForm for an EJB property that is an "int").

* So that your application data objects can be reused in non-Struts
  contexts (otherwise, they would always require struts.jar to be around).

You *really* don't want to modify anything in your application data model
until *after* validation has succeeded.  That's why the Struts design
pattern is to do this in an Action, by copying the appropriate values from
the ActionForm into your application data objects, performing any data
conversions that are necessary.  Making ActionForm a class instead of an
interface forces you to do the right thing.

>  regards
>
>  Wojtek
>

Craig McClanahan


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to