Hi Gerald, One point I'm not clear on from your descriptions, is whether you're directly accessing your .jsp files URL, or if you're accessing them via an action-mapping URL. For example: http://localhost/yourapp/clientinfo.jsp versus http://localhost/yourapp/clientinfo.do With Struts, the second form is (*typically*) preferred-- I generally recommend doing something like this: <struts-config> ... <form-bean name="clientInfoForm" type="com.yourco.struts.ClientInfoForm"/> ... <action path="/editClientInfo" type="com.yourco.struts.ReadClientInfoAction" name="clientInfoForm" scope="request" validate="false"> <forward name="success" path="/WEB-INF/jsp/editClientInfo.jsp"/> </action> <action path="/saveClientInfo" type="com.yourco.struts.SaveClientInfoAction" name="clientInfoForm" scope="request" validate="true" input="/WEB-INF/jsp/editClientInfo.jsp"> <forward name="success" path="/mainMenu.do" redirect="true"/> </action> ... .. . With these mappings, the link on your mainMenu.jsp should look *similar* to this: <html:link page="/editClientInfo.do"> <bean:message key="mainMenu.label.editClientInfo"/> </html:link> When this URL is invoked, the Struts ActionServlet will instantiate a ClientInfoForm for you, then forward control to the ReadClientInfoAction, passing a reference to the ClientInfoForm. Once inside the Action, you can retrieve the appropriate ClientInfoBean and push it onto the Form. I've used a couple different approaches for this last step. 1) Use a Mediator to populate the form with the bean data 2) Make the form responsible for populating itself w/ a reference to the bean The first is useful for avoiding direct coupling between your form and bean. Basically, you're introducing a third object that knows the interface of both the form, and the bean. For example: public class BeanFormMediator { public void populateClientInfoForm(ClientInfoForm form, ClientInfoBean bean) {...} } The second approach, which I generally prefer, assigns responsibility to the form for knowing about the bean. Note: I usually make this method package private-- ideally, the action (same package) is the only object that knows about this implementation detail. public class ClientInfoForm { void populate(ClientInfoBean cib) {...} } Of course, there are caveats with any approach, and there is always another way to skin a cat etc.. However, this approach has worked quite well for me on several projects. HTH, Levi ----- Original Message ----- From: "Gerald Hanks" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Sunday, July 15, 2001 7:55 AM Subject: Re: Preloading ActionForm data from database (newbie question) > Klaus, > > Thank you for the response. Let me see if I can explain a little bit more > about what I have done and see if this changes your answer at all. > > I have two jsp forms right now. One is login.jsp and the other is > signup.jsp. Each one has an associated Form and Action. If the login > fails it goes back to the login.jsp page. If the login succeeds, it loads > the mainmenu.jsp page. If the signup fails it goes back to itself if it > succeeds it goes to the mainmenu.jsp page as well. > > Both the login and signup when successful load the client_id into a > ClientBean along with a timestamp so that I can track how long the client > has been active (and wether or not to invalidate the session because of > inactivity). Since this application could potentially have thousands of > active users logged in I do not want to have a lot of data hanging around > in "session" beans. > > I would like to have the client_info data loaded from the database only > when the client needs to review or modify it. I do not want to keep it > around for longer than the "request". From the mainmenu.jsp the client > can choose a link that goes to the clientinfo.jsp form where they can > review their client info and make changes. The clientinfo.jsp has been > linked with the ClientInfoForm bean and ClientInfoAction to handle the > validation and saving of the modified data. My problem is that the > ClientInfoBean that holds the data to be modified is not loaded at the > time that the clientinfo.jsp is loaded. Because of this, there are no > values loaded into the form. The form is blank (as if the client_info did > not exist). I need the ClientInfoForm bean to talk to the ClientInfoBean > before the jsp page starts loading the form (so that the current data can > be loaded into the form). Does this help out at all? > > -gerald > > Klaus Thiele wrote: > > > hi gerald, > > > > i don't now if i really understand your problem. > > in my opinion, the ClientInfoForm has noting to do with your > > ClientInfoBean. > > > > i would prefere this (regards to the struts-sample-app): > > > > 1) logon.jsp - LogonAction - LogonForm > > LogonForm validates the fields username and password are filled out by > > the user. > > LogonAction instantiates your ClientInfoBean and call some methods on > > it to verify if the user is already registrated (read the record from > > the database) - if not, error and back to the logon-page (or create a > > new account,....). > > but if the user is registrated, put the ClientInfoBean-Object into the > > session-context and go to the main-menu. > > 2) clientinfo.jsp - Edit/SaveClientInfoAction - ClientInfoForm > > EditClientInfoAction retrieve the ClientInfoBean-Object from the > > session-context, calls some methods on it to fill the fields in > > ClientInfoForm. > > if submit is clicked, do some simple validations in > > ClientInfoForm (are the fields filled out, date's valid entered,...). > > in SaveClientInfoAction retrieve the ClientInfoBean-Object from the > > session-context, call the validation-methods on your ClientInfoBean and > > save the data, display an error,.... > > > > hope that helps > > klaus > > > > Am Sonntag, 15. Juli 2001 05:54 schrieben Sie: > > > I started an app where I have a client login and jump to a main menu. > > > From that menu the client can modify their account info. I have a > > > ClientInfoForm bean, a ClientInfoAction and a clientinfo.jsp input > > > form. I have also created a ClientInfoBean which has all of the > > > business logic to retrieve the clients info from the database and > > > save it back out when finished. > > > > > > I have the ClientInfoForm doing all of the appropriate validation > > > stuff and the ClientInfoAction communicates fine with the > > > ClientInfoBean to save all of the data back to the database. My > > > problem is how and when to get the ClientInfoForm bean to communicate > > > with the ClientInfoBean so that when the clientinfo.jsp form loads, > > > the fields are properly filled in. Is it appropriate to create a > > > constructor for the ClientInfoForm so that when it is created the > > > communication with the ClientInfoBean happens then or is there a more > > > appropriate way? > > > > > > Thank you in advance, > > > > > > -gerald > > > > -- > > Klaus Thiele - Personal & Informatik AG > > mailto:[EMAIL PROTECTED] > > > > "Your mouse has moved. > > Windows must be restarted for the change to take effect." > >