Sounds like there are many benefits to using DynaForms but 
is there any downside ?

For instance, not having explicit getters means using a generic
get method that has return type Object.  This in turn means 
having to use typecasts to cast from Object to some other type
The drawbacks of typecasting are the extra run-time overhead
plus the possibility of a ClassCastException.  I think its a common
tradeoff (flexibility versus type-safety).  

The Ofbiz project (www.ofbiz.org) also pushes the idea of 
using XML configuration files to define what kind of data is used
in the application.  It seems like more of an end-to-end solution
though than Struts since Ofbiz facilitates automatic construction of the
presentation, business, and data access layers all via XML configuration.  

I didn't see any mention of Ofbiz in the archives and was just wondering
if there's been any discussion about this ?

    Nick
  


-----Original Message-----
From: Ted Husted [mailto:[EMAIL PROTECTED]]
Sent: Thursday, November 21, 2002 6:45 PM
To: Struts Developers List
Subject: Re: Benefits of Dynaforms


11/20/2002 3:09:36 AM, Erik Hatcher <[EMAIL PROTECTED]> wrote:
>As for DynaActionForm's.... I still don't get their benefit.  Do
>you use them?  Or right ActionForm subclasses?  Its even less 
>code to "write" to do a form bean for me, because my IDE 
>generates all the getter/setters, and being able to generate 
>validation.xml makes it so worthwhile.  :)

The nice thing about DynaForms is that they are a "simple" 
solution to a simple problem: I just want to store and validate 
some simple properties on the presentation layer before passing 
them up to the business tier. Sure some tools can make JavaBeans 
very easy to write. DynaBeans are just another one of those tools, 
and a GUI independant tool at that. It doesn't matter if you are 
using Eclipse or IntelliJ or JBuilder. A DynaBean is a DynaBean. 
And before long, I'm sure the IDEs will be helping you code 
DynaBeans too =:0)

The truly excellent part is that you can extend DynaActionForm to 
create complex helper properties when you need them, or just use 
the base class when you don't. YMTD.

But here's the kicker: With the help of the Validator and a 
handful of standard Actions, DynaBeans open the door to doing the 
~entire~ presentation tier via  XML configuration files. I rarely 
write custom Actions any more. With DynaBeans, I may also be able 
to get out of writing custom ActionForms. 

Ideally, a framework like Struts should just be passing gestures 
and data back and forth between the presentation pages and 
business tier. IMHO, doing any "real" programming in Struts is an 
engineering compromise. Architecturally, we should be trying to 
help developers avoid as many "necessary evils" as possible. 
DynaBeans serve that purpose by making it possible to avoid 
creating and maintaining yet-another Java class, which, in 
practice, often encroaches on the business tier. 

Before DynaBeans, that practice was unavoidable (or at least 
caused greater evils). With DynaBeans, there is a real possibility 
that you could code the Struts portion of an application entirely 
through XML configuration files, and keep all the "real 
programming" on the business tier.

Here's another kicker: Components like the Validator aren't just 
for the web tier. You could also be using the Commons Validator in 
the business tier, which opens the door to a common Validator 
configuration shared by Struts and the business tier. 

DynaBeans also have the potential of being the "missing buffer" we 
need for data-entry. What about a DynaBean class that included a 
"shadow" String field with every dynamic property? (All we need is 
another map.) If we integrated a DynaBeanBuffer subclass with the 
Validator, we could then declare field-level validations for our 
properties. A validate method on the DynaBean could check each of 
its buffers, and transfer the datea if validation passed, but 
raise a flag if it didn't. We could then finally use the same bean 
on the Web tier as we do on the business tier. This sort of thing 
is a bear to code with conventional JavaBean, but might be worth 
doing with something like the DynaBean.

-Ted.




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

Reply via email to