... yea so I wasn't expecting that to be the fix... good job though!

Dana Hata wrote:

Problem solved.  Apparently, if you have the name and type attributes
defined in the html:form tag, it causes this behavior.  As in:

<html:form action="MyAction" name="myForm" type="com.blah.blah.MyForm">

I simply changed that to:

<html:form action="MyAction">

And now the form gets repopulated.  Is this obvious to everyone else, or
does anyone else think struts should be more resilient?  Also, can
someone explain what actually happened in the first one?

Dana


On Tue, 2004-05-04 at 22:15, Barett McGavock wrote:


Hi Dana,

If I had only one guess as to the problem, I'd say there was a mismatch
between a JSP tag versus what was defined in struts-config. I've found my
silent errors most often trace back to JSP tags. This could be scope-related
but is more likely the name. The name attribute of the action tag
(struts-config) must match the name attribute of the form-bean tag
(struts-config). The action attribute of the html:form tag (JSP) must match
the path attribute of the action tag (struts-config). If the html:text or
other output elements are Struts tags and inside the form tag, you won't
need to specify the name attribute, just the property attribute. The JSP tag
names are often derided as poorly named.

Basic requirements for keeping an ActionForm contents:
- Must have your ActionForm defined in struts-config.xml
- Action must have this ActionForm associated in struts-config.xml.
- You should work with the ActionForm passed into the action.
- You should have an <html:form> tag configured to point to an action with
the form declared. (Don't forget to define the html JSP tag name.)

Beyond that, you might also compare your struts-config, jsp, and action to
some existing samples. I use the feature you mention in every one of my many
Struts modules and it works perfectly for me.

If you could give more concrete examples from the struts-config.xml, JSP,
and action files, we could probably be more helpful. Helpful stuff from
struts-config: your form, action, and action-mappings; from the JSP:
html:form tag and any fields, along with the definitions at the top. The
execute/perform method of your Action.

FYI: To know whether you're redirecting to the form, the form mapping must
have a redirect=true attribute in struts-config.xml.

B



-----Original Message-----
From: Dana Hata [mailto:[EMAIL PROTECTED] Sent: Tuesday, May 04, 2004 6:38 PM
To: Struts Users Mailing List
Subject: Re: struts repopulate bug?



Answers to the questions below...


I spent 10 hours on it so far, so I've tried many things. Now I did see the Action errors listed in the JSP. Either Struts is not putting the form bean on the request/session, or it's not populating what it did put on the request/session with was it found in the submitted form bean.

Dana

On Tue, 2004-05-04 at 21:26, Riyad Kalla wrote:


Dana,
Yes Struts should and does do this. It actually does this so well, that
for login forms you need to manually clear the beans or else it repopulates the values :)


1) Are you syncing up the names/properties of your fields

on your JSP


page in the form with the property names of the Form?
.. Java snippet ..
public String getUserName();
public void setUserName(String userName);

... JSP Snippet ...
<html:text name="userForm" property="userName" />



Yes. I am following Struts' strict naming conventions.



2) Did you implement your reset method cleanly?


Yes.


3) Is your validate method straight forward?
if(userName == null || userName.length() == 0)
// make/add some errors
return actionErrors;


Yes.


4) How is your action defined in your struts-config? Did

you specify a


scope for the bean? Have you tried NOT specifying the scope?



I have tried both session and request, and neither worked, though it shouldn't matter which one you choose, no?



I want to reassure you that Struts does this very well and doesn't need
you to hack around it, so if this is not working for you,


we just need

to keep trying.

Dana Jeffrey Hata wrote:



I'm using Struts with WSAD, and I am attempting something very simple, which should happen automagically. Basically, I

just need to

have the form re-populate after submitting a form which

doesn't pass

the form bean's validate method. Should happen without

any special

coding from me, as this is supposed to be a feature of

struts. Well,

it didn't happen for me. I checked things like form-bean

scope. By

plugging in some strategically placed System.outs, I realized that struts was creating a new formbean object, and populating it, but when it came back to my JSP, that was using a different formbean object. Shouldn't it be getting the form bean which (should have been) placed in the request/session by the actionservlet?

Well, it

apparently wasn't, because the way I got it to work was simply putting the following line at the end of my formbean validate():

request.setAttribute(<my formbean name>,this);

This made everhything work, so my question is, why the hell didn't struts do this? Isn't it supposed to? Is there anything I could have done to make struts not do this, or maybe place a

different form

bean instance on the request? It works now, but I don't

like hacks.


Thanks in advance,

Dana



---------------------------------------------------------------------


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]




---------------------------------------------------------------------
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]






---------------------------------------------------------------------
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]



Reply via email to