Mark,

We just happen to be fighting a similar problems today. Someone please correct me if I am off base here, which jugding by my results I am, but shouldn't this work (psudo-code):

1. MyForm myForm = (MyForm)form;
2. myForm.getValues() --> myStateObject.setValues();
3. myStateObject.save();
4. MyNextForm myNextForm = new MyNextForm();
5. myStateObject.getValues() --> myNextForm.setValues();
6. request.setAttribute("nameFromStrutsConfig", myNextForm);
7. return mapping.findForward("success");

It is then my understanding that the JSP that we are forwarding to will then retrieve the request object attribute "nameFromStrutsConfig" and attempt to populate the JSP form from that object. I believe that the name that the JSP is attempting to use is the value of the <action> parameter "name" from the struts-config.xml file.

Am I off base here? Thanks in advance for any help.

Mark Lowe wrote:

As a side note I'd watch out putting dots in your actions .. I was doing the
same and it worked .. and then i was getting an error that complained it
could find the action...

perhaps it was the release i was using or something, but i'd hate someone
else to wash time out over this as well.. If its working however then don't
fix it...



----- Original Message -----
From: "Mark Conlin" <[EMAIL PROTECTED]>
To: "'Struts Users Mailing List'" <[EMAIL PROTECTED]>
Sent: Friday, December 20, 2002 8:42 PM
Subject: RE: Pre-populating Form Bean



This can not be the correct way to do this.

I removed any reference to the form from the pre-Action:

<action path="/customer.customerAccountDetails.pre.edit"
type="com.yordata.action.customer.CustomerAccountDetailsPreEditAction">
<forward name="success" path="customer.edit_accountdetails"/>
</action>

Then I placed the Form into the session in the action like this:
session.setAttribute( "customerDetailsForm", custForm);

This works but, I do not want to hard-code the form reference like this.

Mark



-----Original Message-----
From: Mark Conlin [mailto:[EMAIL PROTECTED]]
Sent: Friday, December 20, 2002 2:30 PM
To: 'Struts Users Mailing List'
Subject: RE: Pre-populating Form Bean



Okay, I think I am missing something major here.
By watching the log files I see the following.

1)Proccessing my pre edit Action -
"customer.customAccountDetails.pre.edit"
2)Struts then looks for my ActionForm - "customerDetailsForm"
3)Struts then creates my ActionForm since it can not find it.
4)The form fails validation, as described by my validation.xml file.

The pre edit Action never runs...

The result is that I arrive at my "create" page with validation errors
because the validation logic tells it to return to that page.

So, how can I pre-populate a Form? What am I don't wrong here...

Mark


-----Original Message-----
From: Mark Conlin [mailto:[EMAIL PROTECTED]]
Sent: Friday, December 20, 2002 1:38 PM
To: 'Struts Users Mailing List'
Subject: RE: Pre-populating Form Bean


Okay so I have done the following...
I placed name="customerDetailsForm" into my action declaration..
It wanted an input field as well so I added that too.

Now my form comes up and it is still not populated...

My action execute code is below... are you sure I don't need to place
the custForm back into the session somehow ?


Thanks
Mark

logger.debug("performAction starting");
ActionErrors errors = new ActionErrors();
ActionForward actionForward = mapping.findForward(FAILURE);
CustomerDetailsForm custForm = (CustomerDetailsForm) form;
HttpSession session = (HttpSession) request.getSession();

custForm = this.setup( session );
actionForward = mapping.findForward(SUCCESS);

logger.debug("performAction exiting");

Action Declaration:

<action path="/customer.customerAccountDetails.edit"
type="com.yordata.action.customer.CustomerAccountDetailsEditAction"
name="customerDetailsForm"
scope="session"
input="customer.account_details_view">
<forward name="success"
path="/customer.customerAccountDetails.view.do"/>
<forward name="failure" path="customer.edit_accountdetails"/>
</action>


-----Original Message-----
From: Eddie Bush [mailto:[EMAIL PROTECTED]]
Sent: Friday, December 20, 2002 2:13 PM
To: Struts Users Mailing List
Subject: Re: Pre-populating Form Bean

If this is a form which you've declared in your config file, and it's
associated with this action and you're forwarding to a JSP, you really
needn't bother sticking it into any scope. Struts will do this for you.

Just populate the form and return an ActionForward and let Struts do
it's thing.

... so far as your error is concerned, I can't imagine why you're
receiving it. You did specify a 'name="formName"' as an attribute to
this action, right? That's how you make the association between the
action and the form. I believe this value would probably be null if you

didn't specify that attribute - and I can see where that would generate
an error.

Ah - yes. I see your action declaration now. Add in
'name="customerDetailsForm"' to your <action line. That will build the
association for you. Once you've done this, you no longer have to worry

about creating the form ... or anything like that - and it's the *only*
way you're going to get Struts to populate the form for you
automatically (why would it populate something if it doesn't know there
is something to populate?).

Good luck!

Mark Conlin wrote:


I would like to pre-populate a form bean for an edit screen.
I have spent the last hour or two reading the archives and still I have
failed to find the help I need.
Any feedback would be appreciated.

I have an Action class CustomerAccountDetailsPreEditAction that
pre-populates my form.
However, I do not know how to place the form back into the session or
request so that the jsp page can find it and use it to display values.

request.setAttribute(mapping.getName(), myForm);
session.setAttribute(mapping.getName(), myForm);

Both result in an error.

Here is the action declaration:
<action path="/customer.customerAccountDetails.pre.edit"

type="com.yordata.action.customer.CustomerAccountDetailsPreEditAction">
<forward name="success"
path="customer.edit_accountdetails"/>
</action>


Here is the form declaration:
<form-bean name="customerDetailsForm"
type="com.yordata.form.CustomerDetailsForm"/>


Thanks for your help,
Mark




--
Eddie Bush





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


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


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


--
To unsubscribe, e-mail:

<mailto:[EMAIL PROTECTED]>

For additional commands, e-mail:

<mailto:[EMAIL PROTECTED]>



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



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

Reply via email to