Other ApplicationsStruts Resume
Set your name in
This is from a discussion on the struts-user mailing list. I'm continuing it here because I want to propose a new idea:
Send your POJOs to the UI rather than converting them to ActionForms first.
By this, I mean to say that I'd like to retrieve and display POJOs on the UI, and then capture their information (as ActionForms) when saving the form. The reason I want to do this is because of Hibernate's Lazy Loading feature and formatting Dates. Basically, Hibernate allows you to load children of an object lazily (i.e. resumes of a User), when the getResumes() method is called.
The issue I'm seeing right now with lazily-loaded properties is that they're loaded when using BeanUtils.copyProperties() is called. I use this to convert POJOs to ActionForms, and consequently the getResumes() method is called. However, I don't want this. I'd rather the getResumes() method is called when I call it in my code (rather than by a 3rd party conversion utility). Therefore, I'm thinking that passing the POJO to the view is the best solution. Because I'm using the open-session-in-view pattern, those lazy collections are still available while the JSP is being rendered.
This solves another issue too. It's nice to format dates on the UI, and you need a real date on your form to do this, rather than a String value of a date that's already been converted.
One issue might be with checkboxes, but I can just use the Form for that, right? I haven't tried this yet, but I wanted to write my thoughts down and stir up some discussion on it beforehand.
You might also be interested in my blog entry on the subject.
Are you saying that you would populate the form manually in the view? ~ mojavelinux
I suggest looking at Struts' Nested taglib. It does set properties if complex DTO objects and does not require (semi)manual conversion between strings and actual data types. With little wrapper to BeanUtilities, which registers a Date handler with desired formatting pattern, it allows correct handling of dates.
I know it's not really useful to you, but WebWork gives you this natively. It's one of the big differences between WW and Struts, in that with WebWork you can make true model-driven actions, and then use them in your form.
For example a form field called