Raible's Wiki

Raible Designs
Wiki Home
News
Recent Changes

AppFuse

Homepage
  - Korean
  - Chinese
  - Italian
  - Japanese

QuickStart Guide
  - Chinese
  - French
  - German
  - Italian
  - Korean
  - Portuguese
  - Spanish
  - Japanese

User Guide
  - Korean
  - Chinese

Tutorials
  - Chinese
  - German
  - Italian
  - Korean
  - Portuguese
  - Spanish

FAQ
  - Korean

Latest Downloads

Other Applications

Struts Resume
Security Example
Struts Menu

Set your name in
UserPreferences


Referenced by
...nobody




JSPWiki v2.2.33

[RSS]


Hide Menu

ValueObjectInForm


Difference between version 15 and version 10:

At line 1 changed 26 lines.
I guess this page should really be DTOInForm since Data Transfer Object is the proper designation for a data bean. Anyways, this is really a hot topic right now in Raible world and I would very much like to determine how best to use this design in applications. In short, what relationship do DTO objects and ActionForms (or DynaActionForms) have and where are the supporting methods for these objects added. That is the question on the table.
!!The history of appfuse's DTO/ActionForm design
When I first started developing with Struts (pre 1.0), I'd just have a simple form with a DTO (VO back then) as a getter/setter on my form. In the last year, I've changed to have a DTO and a Form, where the DTO has the true data types (Long, Date, etc) and the form has only Strings. After doing it both ways, it seems like the DTO as a getter/setter is really the better way
to go. I'm not trying to say it's the *right* way according to the design patterns, I'm just offering my $.02 from experience. I continue to do it the BeanUtils.copyProperties() way, but the projects I work on that do it the other way seem cleaner.
For an example of a DTO -> BeanUtils.copyProperties() -> Form, check out the following links:
<div style="background: #eee; padding: 5px; border: 1px solid silver">
DTO -> User.java (source: [http://tinyurl.com/emo7])
Conversion -> UserManagerImpl.java (source: [http://tinyurl.com/emof]
- see convert() method). This extends BaseManager ([http://tinyurl.com/emok]),
which registers custom converters. No DateConverter in this example,
but I've done it at my day job, so I know it's fairly easy.
Form -> UserForm.java (generated via XDoclet from User.java)
</div>
''This post is mine from the [struts-user mailing list|http://www.mail-archive.com/struts-user%40jakarta.apache.org/msg69836.html].''
~ [MattRaible]
__Related Pages:__
* [POJOsToForms]
--> Please see [DTOInForm]

Back to ValueObjectInForm, or to the Page History.