I use Hibernate. I wouldnt consider this goal at all obtainable without a robust. ORM tool.
Don't get me wrong, I'm not hellbent on using Maps for everything. I dont mind creating the forms. I mind creating N extra classes because of the JSP type conversion issue. What I'm going to do in the semi-short term: Have a build task of some kind go through my DynaForm declarations and create me a class chocked full of static final String declarations. Things like static final String XformYproperty = "y"; etc. This way I can refer to the Strings whenever I do a formBean.get() or formBean.set() and get a COMPILE TIME error if I typo. I believe something ought to be done about the way dynaform properties are declared. 99% of the time they need to be Strings. Wouldn't it be more useful to have the form object do the type conversion? Have a way to tell it the "JSP type" (99% String) and the "application type". Make the form objects smart enough to give you a properly typed result, much in the same way Hibernate's Session.load(Object obj, Object id) populates the right values into obj. I came from a JSP based framework that always but Always assumed String's in the JSP, and allowed you to import/declare your "FormBean/PersistenceBean" mappings via JDBC. It worked very well, and I find myself sighing "for the good old days" every time I find myself fighting with BeanUtils.copyProperties. -Joe > -----Original Message----- > From: Adam Hardy [mailto:[EMAIL PROTECTED] > Sent: Sunday, April 04, 2004 6:05 AM > To: Struts Users Mailing List > Subject: Re: integer validation problem > > > A lofty goal, Joe! What are you using on the back-end to > connect to the > database? > > Until I decided to go with xdoclet which generates the DTOs > and the EJBs > for me, I was wondering about using some sort of solution like you, > where I used a DynaForm mothership that \'released\' its Map to the > back-end via the getMap() method (for want of a better metaphor). > > There were several drawbacks I could see. > > 1: there is no setMap() method to go in the other direction > > 2: the back-end would be strongly coupled to the web-interface by a > dependence on it either for validation or, if the back-end did > validation, because validation / type-casting errors would only be > raised at the back-end > > 3: there is no clever way to set up a programmatic \'contract\' between > the front-end and back-end as to how the variable-keys in the > map would > be named (front-end keys are based in struts-config.xml) > > > Adam > > On 04/04/2004 10:24 AM Joe Hertz wrote: > > Jolly, you answered it yourself: > > > > \"I dont want to write another actionForm class that represent my > > DTO...I am > > in great trouble.\" > > > > This isn\'t Struts causing you the problem. It\'s the JSP spec. > > > > The automatic type conversion it does for you, will cause \"null > > integers\" to > > be sent into your DTO as 0. > > > > So yes, if you cannot be bothered to create another bean > form class, > > then > > there is no solution. Not one that uses JSP\'s anyway. > > > > I do feel your pain though. It seems on many levels, just > plain silly > > to have > > to declare objects almost but not completely like the ones > you already have > > (complete with the risk of accidental typos) just to > satisfy the web tier. > > > > My suggestion: Find a tool that helps you define your form > bean getter > > and > > setters, or do what I do: Use DynaBeans. I\'m doing some > reasonably complex > > validation and nesting with DynaBeans in forms. In fact, I have > > a \"GenericListForm\" DynaBean which just contains a List > property. I can use > > this form on any JSP that shows a list of objects. For me, > those list objects > > are dynabeans themselves. > > > > My goal is to never have to write a getter or setter in a form bean > > ever > > again. > > > > Hope this helps > > > > -Joe > > > > > > > >>-----Original Message----- > >>From: jolly [mailto:[EMAIL PROTECTED] > >>Sent: Saturday, April 03, 2004 11:12 PM > >>To: Struts Users Mailing List > >>Subject: Re: integer validation problem > >> > >> > >>Dear Richard > >> Thanks for your reply. But I dont want to declare this type > >>of variable as String. I want to use the DTO as form bean > >>property. For this it is not validated by validator. so I > >>have to make my DTO dirtty that is I have to declare another > >>attribute for all variables that are not String. And I pass > >>that String attribute to the jsp and then I set the > >>validated value to my integer or double variable. This > >>type of solution cant satisfy me. I dont want to write > >>another bean form class. So I have to comprise myself > >>with that solution. > >>thanks again for your help > >>-jolly > >> > >>On Sat, 03 Apr 2004 12:16:35 -0800, Richard Yee wrote > >> > >>>Jolly, > >>>If you had checked the archives, you would have found your answer > >>>immediately since this topic has come up several times in the past > >>>two weeks. Anyway, declare your firstCategoryAmount and > >> > >>incrementDTO > >> > >>>attributes as Strings instead of int and double. > >>> > >>>-Richard > >>> > >>>At 10:57 PM 4/2/2004, you wrote: > >>> > >>> > >>>>Hi please help me. My form-bean declaration is like this > >> > >><form-bean > >> > >>>>name=\"payScaleForm\" > >> > >>type=\"com.mislbd.iris.util.CustomDynaActioForm\"> > >> > >>>> <form-property name=\"payScaleDTO\" > >>>>type=\"com.mislbd.iris.hr.core.compensation.PayScaleDTO\" /> > >>>> > >>>>and PayScaleDTO has incrementDTO as its attribute. > >>>>I define my jsp as: > >>>><layout:text key=\"payScale.basicPay\" > >> > >>property=\"payScaleDTO.basicPay\" > >> > >>>>styleClass=\"LABEL\" isRequired=\"true\"/> > >>>> <layout:text > >>>>key=\"payScale.Increment.firstCategoryAmount\" > >>>>property=\"payScaleDTO.increment.firstCategoryAmount\" > >> > >>styleClass=\"LABEL\" > >> > >>>>isRequired=\"true\"/> > >>>> > >>>>basicPay and firstCategoryAmount are defined as integer or double. > >>>>But this fields are not validated if i enter text and > >> > >>saved zero to > >> > >>>>database. I cant use copyproperties of beanutils because > >> > >>of the ha a > >> > >>>>relationship. I dont want to write another actionForm class that > >>>>represent my DTO. How can I solve my problem. please help > >> > >>me. I am in > >> > >>>>great trouble. JOlly > >>>>-- > >>>>jolly > >>>> > >>>> > >>> > >>>----------------------------------------------------------- > ---------- > >>> > >>>>To unsubscribe, e-mail: [EMAIL PROTECTED] > >>>>For additional commands, e-mail: [EMAIL PROTECTED] > >>> > >>> > >>------------------------------------------------------------ > --------- > >> > >>>To unsubscribe, e-mail: [EMAIL PROTECTED] > >>>For additional commands, e-mail: [EMAIL PROTECTED] > >> > >> > >>-- > >>jolly > >> > >> > >>------------------------------------------------------------ > --------- > >>To unsubscribe, e-mail: [EMAIL PROTECTED] > >>For additional commands, e-mail: [EMAIL PROTECTED] > >> > >> > >> > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > -- > struts 1.2 + tomcat 5.0.19 + java 1.4.2 > Linux 2.4.20 Debian > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]