On Mon, 10 Mar 2003, Puneet Agarwal wrote:

> Date: Mon, 10 Mar 2003 11:31:29 -0000
> From: Puneet Agarwal <[EMAIL PROTECTED]>
> Reply-To: Struts Users Mailing List <[EMAIL PROTECTED]>,
>      Puneet Agarwal <[EMAIL PROTECTED]>
> To: Struts Users Mailing List <[EMAIL PROTECTED]>
> Subject: Re: [Design Pattern]FormBean in Model Layer
>
> Yeah I am going to adopt this. I am not very sure of how exactly am I going
> to do that(at the moment). But yes it sounds too  good.
>

I do *not* agree with the idea of using an ActionForm (either DynaForm or
not) as a DTO.  Using a custom interface gets around one of the problems
(introducing a dependency on Struts), but not around the biggest one --
the data types in a correctly written ActionForm are wrong for the
business tier.

In order to fulfill its purpose, the ActionForm properties must allow
incorrect input to be redisplayed -- for example, a field that accepts an
integer should allow the user to type "1a3" instead of "123" and have
"1a3" redisplayed with the error message.  In order for this to work, the
ActionForm property must be a String.  Yet, in a properly designed DTO,
the property type would be "int".

The best design practice is to create a separate DTO object (or DynaBean)
with the correct data types, and use BeanUtils.copyProperties() to copy
the values -- with appropriate conversions -- in your Action that accepts
the form.  You know that you won't get conversion errors because they
would have been caught in the validation checks that preceed calling the
Action.

> Thanks
> Puneet Agarwal

Craig McClanahan

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

Reply via email to