I would argue that it is quite easy to reuse your regular classes
as struts form  beans. This strategy may involve putting code
into your so-called 'business' classes who's purpose is to help
with certain kinds of 'presentation' level logic. The real question
is, do you want a 2-tier architecture or a 3-tier
architecture? In the two-tier approach, struts is both the
business and presentation tier (tier 1) and there is a data tier
(tier 2) that handles the communication with the database. In the
3-tier approach struts is strictly a presentation layer that can
be 'plugged into' any kind of back-end business tier. So that's
really the question. Do you need the modularity of a 3-tier
architecture(and are you willing to pay the price for it)? This
architecture is very popular these days, but I contend that it
is overkill for most real-world projects. It is not hard at all
to add methods to you so-called business beans that support
setXXX(String) and getXXX() : String, and to modify your
'native' methods as per example setXXXAsCalendar(Calendar) and
getXXXAsCalendar() : Calendar. Having done this sort of thing,
your classes can be reused, and you don't have to do all the
extra shuffling. You may need to put some discipline into your
design so that the presentation aspects and business-logic aspects
are not confusing (especially if you are re-using the bean classes
in some other way that is not at all struts-related). All in all,
I think it is quite doable, and for many projects is a perfectly
reasonable approach (although perhaps not as 'sexy').

Vlad

>From: Rick Reumann <[EMAIL PROTECTED]>
>Reply-To: Rick Reumann <[EMAIL PROTECTED]>
>To: "Maturo, Larry" <[EMAIL PROTECTED]>,   Struts Users Mailing 
>List <[EMAIL PROTECTED]>
>Subject: Does this tag exist & architecture  [was] This hopefully is a 
>simple question that has been dealt with
>Date: Fri, 29 Mar 2002 12:05:14 -0500
>MIME-Version: 1.0
>Received: from [192.18.49.131] by hotmail.com (3.2) with ESMTP id 
>MHotMailBE6DEB89002A4136E855C0123183D1B80; Fri, 29 Mar 2002 09:12:41 -0800
>Received: (qmail 15319 invoked by uid 97); 29 Mar 2002 17:05:26 -0000
>Received: (qmail 15308 invoked from network); 29 Mar 2002 17:05:25 -0000
>From struts-user-return-30889-aphelionx Fri, 29 Mar 2002 09:13:51 -0800
>Mailing-List: contact [EMAIL PROTECTED]; run by ezmlm
>Precedence: bulk
>List-Unsubscribe: <mailto:[EMAIL PROTECTED]>
>List-Subscribe: <mailto:[EMAIL PROTECTED]>
>List-Help: <mailto:[EMAIL PROTECTED]>
>List-Post: <mailto:[EMAIL PROTECTED]>
>List-Id: "Struts Users Mailing List" <struts-user.jakarta.apache.org>
>Delivered-To: mailing list [EMAIL PROTECTED]
>X-Mailer: The Bat! (v1.60) Personal
>X-Priority: 3 (Normal)
>Message-ID: <[EMAIL PROTECTED]>
>In-Reply-To: <47599681A9BA574FBCA93E884DD9114135C615@ZEUS>
>References: <47599681A9BA574FBCA93E884DD9114135C615@ZEUS>
>X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N
>
>On Friday, March 29, 2002, 11:19:25 AM, Maturo, Larry wrote:
>
>ML> We define a separate bean that mirrors our
>ML> EmployeeBean, but has string fields.  We then
>ML> get a list of EmployeeBeans and manually convert
>ML> them to a list of EmployeeStringBeans. :-)  It's
>ML> a pain, but it works.  Note that we only populate
>ML> the fields we actually plan on displaying, since
>ML> it is pointless to populate the other fields.
>
>     Thanks for your feedback Larry. (By the way nice job on that
>     AthensGroup paper on Struts if you wrote it).
>
>     Currently I already have an EmployeeForm bean (all String fields)
>     and an EmployeeBean (Strings, ints, etc.). The business tier does
>     the DB query and returns an ArrayList of EmployeeBeans. Now the
>     question becomes what next in order to iterate through this list
>     and display the EmployeeBean fields in a nice way (ie. proper date
>     format, currency format, etc.) ?...
>
>     I'm assuming from your reply that you might have extra logic
>     somewhere that will take that ArrayList of EmployeeBeans and loop
>     through the list and populate a new List of EmployeeForm beans. In
>     this step calls will be made to make sure the Strings in each
>     EmployeeForm object are correctly formatted. I see how this idea
>     will work, although it seems a shame that you have a perfectly
>     good ArrayList of Employee objects and now you are iterating
>     through it just to populate another ArrayList of Employee objects
>     with all String fields.
>
>     Before I looked into Struts I didn't see the big deal of iterating
>     though this list of regular EmployeeBean objects and then where
>     formatting was needed just call my helper util class to change the
>     format. For example:
>     <%= RickUtils.displayDateAsString( bean.getBirthDate() ) %>
>
>     I know, everyone says the above it bad because you now have
>     scriplets in your JSP code. Still, though, this seems to make more
>     sense to me than to going through the overhead of looping through
>     possibly a large ArrayList of beans in order to just populate a
>     similar ArrayList with just String fields. I suppose I will go
>     the later route in order to maintain the Struts architecture of
>     perfectly clean JSP pages.
>
>     Being new to struts and new to using tags, would it be that
>     difficult to create a tag that when passed a double it new to spit
>     out a display in some currency format or if it received a Date it
>     would display it in the proper format. I noticed there is a tag
>     library out there for display dates, but ideally I would like one
>     tag that would just pick up the datatype and "if datatype is
>     double" display this way, if Date display this way."
>
>     Does a tag library like the above already exist?
>
>     Thanks again for your feedback. I'm posting this to the list as
>     well for any other ideas.
>
>
>
>ML> There is a utility in Struts to help with this, but
>ML> I have never used it, since it always seemed like
>ML> learning to use it was more work than doing it
>ML> manually.
>
>ML> -- Larry Maturo
>ML>    [EMAIL PROTECTED]
>
>
>ML> -----Original Message-----
>ML> From: Rick Reumann [mailto:[EMAIL PROTECTED]]
>ML> Sent: Thursday, March 28, 2002 9:09 PM
>ML> To: Struts Users Mailing List
>ML> Subject: This hopefully is a simple question that has been dealt with
>
>
>ML> Sorry to post this question again, but I'm still curious about this
>ML> ...
>
>ML> I'm sure this question has come up but I'm not having much luck
>ML> searching the archives. I'm really new to Struts so I hope this
>ML> question isn't too out of place for this list. Lets say we are dealing
>ML> with Employee beans. I would my EmployeeBean to be able to have
>ML> members that are not all Strings. (In this example say Age would be an
>ML> int, birthDate a java.util.Date, etc.). Now in the sample app I'm
>ML> developing I have an EmployeeForm class also that currently has just
>ML> String datatypes for these fields. Having the information from the
>ML> actual form jsp's going to the EmployeeForm in as all Strings without
>ML> any conversions is not that big of a deal since wherever I do anything
>ML> with this data (jdbc inserts in the business logic I could always
>ML> covert them there if I need to ). However, I'm more concerned with
>ML> getting this information displayed correctly using the iterate tag.
>ML> For example, say I have on an Action class that gets back and
>ML> ArrayList of EmployeeBean objects and puts this list into the request
>ML> before forwarding. I really can't do:
>
>ML> <logic:iterate id="row" name="employeeList">
>ML>     <bean:write name="row" property="firstName"/><BR>
>ML>     <bean:write name="row" property="lastName"/><BR>
>ML>     <bean:write name="row" property="age"/><BR>
>ML>     <bean:write name="row" property="birthDate"/><BR>
>ML>     <BR>
>ML> </logic:iterate>
>
>ML> since I won't have birthDate formatted correctly, or say I was
>ML> returning a Double that I needed in a currency format. What is the
>ML> best way to deal with this situation? I could of course maybe have my
>ML> business logic return me a Collection of EmployeeForm beans instead
>ML> and inside the EmployeeForm beans there would be methods like
>ML> setBirthDateDate( Date date ) that would take a java.util.Date and
>ML> format it into a String and then call the EmployeeForm setBrithDate(
>ML> String date ). Although that would work, I'd still rather deal with
>ML> the business logic that returns a Collection of EmployeeBeans... as
>ML> this seems to make the most reusable sense (maybe the components later
>ML> won't just be for the web).
>
>ML> Thanks for any help.
>
>
>ML> --
>
>ML> Rick
>
>ML> mailto:[EMAIL PROTECTED]
>
>ML> "Why do people in ship mutinies always ask for 'better treatment'? I'd
>ML> ask for a pinball machine, because with all that rocking back and
>ML> forth you'd probably be able to get a lot of free games."
>ML>   -Jack Handey
>
>
>ML> --
>ML> To unsubscribe, e-mail:
>ML> <mailto:[EMAIL PROTECTED]>
>ML> For additional commands, e-mail:
>ML> <mailto:[EMAIL PROTECTED]>
>
>
>
>
>--
>
>Rick
>
>mailto:[EMAIL PROTECTED]
>
>"Sometimes you have to be careful when selecting a new name for
>yourself. For instance, let's say you have chosen the nickname 'Fly
>Head. Normally you would think that 'fly Head' would mean a person who
>has beautiful swept-back features, as if flying through the air. But
>think again. Couldn't it also mean 'having a head like a fly'? I'm
>afraid some people might actually think that."
>   -Jack Handey
>
>
>--
>To unsubscribe, e-mail:   
><mailto:[EMAIL PROTECTED]>
>For additional commands, e-mail: 
><mailto:[EMAIL PROTECTED]>
>




_________________________________________________________________
MSN Photos is the easiest way to share and print your photos: 
http://photos.msn.com/support/worldwide.aspx


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

Reply via email to