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,on your JSP
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
Yes. I am following Struts' strict naming conventions.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" />
2) Did you implement your reset method cleanly?Yes.
3) Is your validate method straight forward?Yes.
if(userName == null || userName.length() == 0)
// make/add some errors
return actionErrors;
4) How is your action defined in your struts-config? Didyou 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 needwe just need
you to hack around it, so if this is not working for you,
to keep trying.just need to
Dana Jeffrey Hata wrote:
I'm using Struts with WSAD, and I am attempting something very simple, which should happen automagically. Basically, I
doesn't passhave the form re-populate after submitting a form which
any specialthe form bean's validate method. Should happen without
struts. Well,coding from me, as this is supposed to be a feature of
scope. Byit didn't happen for me. I checked things like form-bean
Well, itplugging 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?
different formapparently 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
like hacks.bean instance on the request? It works now, but I don't
---------------------------------------------------------------------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]