Thanks for your help! It worked! Now I have the user on the new page, but when the createAccount is entered the action behind the form is also called. Is there a way to avoid this?
Andreas ----- Original Message ----- From: "Robert Taylor" <[EMAIL PROTECTED]> To: "Struts Users Mailing List" <[EMAIL PROTECTED]> Sent: Monday, January 20, 2003 3:02 PM Subject: RE: Forwarding parameters > Andreas, > > If I understand correctly, you have a LoginAction and a NewUserAction. If > the user identifies himself as a new user, you want LoginAction to forward > to a page where the user name is populated and the processing is handled by > NewUserAction. > > One approach would be to place the user name as a request parameter (not > attribute) in the query string > and forward to the new user page. The form on the new user page will render > the form with the new user > name populated in the appropriate field. In this fashion you let Struts do > most of the work for you. > > In order for this to work the user name field name must be identical in the > login form and the new user form. > You must also bind the new user form to the NewUserAction by assigning its > name to the input attribute of the form element in the struts-config file. > > For example you should have something like the following in your struts > config file: > > <form-beans> > <form-bean name="loginForm" type="com.mycompany.BaseForm"> > <form-bean name="newUserForm" type="com.mycompany.BaseForm"> > </form-beans> > > <action-mappings> > <action path="/do/login" > parameter="" > validate="true" > scope="request" > name="loginForm" > type="com.mycompany.BaseAction" > input="/login.jsp"> > > <forward name="success" path="/account/index.jsp"/> > <forward name="newuser" path="/createAccount.jsp"/> > > </action> > > <action path="/do/createAccount" > parameter="" > validate="true" > scope="request" > name="newUserForm" > type="com.mycompany.BaseAction" > input="/createAccount.jsp"> > > <forward name="success" path="/account/index.jsp"/> > > > </action> > > > The createAccount.jsp should have a form element which "points" to the > createAccount action. > <html:form action="createAccount" ..../> > > > The LoginAction code would look something like this: > > MyForm form = (MyForm)form; > String userName = form.getUserName(); > if (isNewUser(userName)) { // determine if the user is a new user > > forward = mapping.findForward("newuser"); > /* > * NOTE: > * There are cleaner ways to attach a parameter > * to the path. Search for > * ParameterActionForward in the mailing list archives. > */ > String path = forward.getPath() + "?userName=" + userName; > forward = new ActionForward(path); > > } else { > > // do something else > > } > > return forward; > > > One last thing. The reason your data is getting "lost" is because you > are redirecting instead of forwarding. When you redirect, a new request > is created thereby loosing all of your existing data. A quick solution > would be to set the redirect flag in the forward to false or just omit > it since forwarding is the default behavior for an ActionForward. > > HTH, > > robert > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>