In a case like this I get lazy & display the field in debug messages in every relevant place. - in the form Bean getter & setter & in reset if it changes the field. - display the field in the JSP (bean write) (as well as the hidden version). - at top of perform method & before you send the form. Then when you test it's usually totally obvious what's wrong, normally a mispelled property name or wrong parm type. That seems pretty slow but I've found that trying to deduce the error usually takes longer & wears me out & drives me mad. For the key fields like below I code the debug messages from the start. I urge you all to try this stuff before turning to the list here. JSP is a 'frail' environment - the tiniest error stops something working & there are a huge number of errors that the compiler can't pick up. Most non-obvious bugs are the result of faulty assumptions by the the programmer. Debug messages tend to eliminate these. I worked with a bunch of trainees so this comes from experience. That's my 2 Euros worth! 2€
--- Ted Husted <[EMAIL PROTECTED]> wrote: > If the userId is a hidden property of the form, then it would be > submitted along with all the visible properties, and be populated to the > ActionForm with all the others. Try changing the method to get > (temporarily) to see what is actually being submitted. > > "Jakkampudi, ChandraseKhar" wrote: > > > > The userID property is already in the action form. Only, it is a hidden > > property which is neither displayed on the form or updated. It is only > there > > to update the proper record when the object is modified. It is not retained > > when validation fails. Thus I get a database error when I update because > the > > primary key (userid) is null. All other properties (that are not hidden) > > are retained. I cannot understand why this happens. I am surprised that > > nobody else has this problem which leads me to think that I am doing > > something wrong. Any help is really appreciated. > > > > -JC > > > > -----Original Message----- > > From: Ted Husted [mailto:[EMAIL PROTECTED]] > > Sent: Thursday, February 14, 2002 5:46 PM > > To: Struts Users Mailing List > > Subject: Re: Request: Property vs Attribute > > > > You might try adding the userId property to the ActionForm, and seeing > > if that approach works better for you. > > > > -- Ted Husted, Husted dot Com, Fairport NY USA. > > -- Java Web Development with Struts. > > -- Tel +1 585 737-3463. > > -- Web http://www.husted.com/struts/ > > > > "Jakkampudi, ChandraseKhar" wrote: > > > > > > The form is initially populated from a value object like > > > > > > <html:text property="userName" value="<%=userInfo.getUserName()%>"/> > > > and > > > <html:hidden property="userID" value="<%=userInfo.getUserID()%>"/> > > > > > > userInfo is not my ActionForm bean, rather it is a value object that is > > > created as part of the previous request (via a database call) that > > specifies > > > which userId is to be modified. This is also in request scope. > > > > > > On coming back to the input page when validation fails etc. the user name > > is > > > retained (magic of struts action form bean) but not the user Id which is > > why > > > I used the request.setAttribute in the first place. > > > > > > Is this not the right way to do things? Any help is appreciated. > > > > > > -JC > > > > > > -----Original Message----- > > > From: Ted Husted [mailto:[EMAIL PROTECTED]] > > > Sent: Thursday, February 14, 2002 4:03 PM > > > To: Struts Users Mailing List > > > Subject: Re: Request: Property vs Attribute > > > > > > As long as it is on the ActionForm bean, you can have the action put the > > > UserID there. > > > > > > While the request attributes are there, and there's nothing to prevent > > > you from using them, everything really does work a lot better if you > > > forget about the parameters, and use the ActionForm bean instead. > > > > > > -- Ted Husted, Husted dot Com, Fairport NY USA. > > > -- Java Web Development with Struts. > > > -- Tel +1 585 737-3463. > > > -- Web http://www.husted.com/struts/ > > > > > > "Jakkampudi, ChandraseKhar" wrote: > > > > > > > > UserID is a member of my action form sub class. I do not have a reset > > > method > > > > defined and I do not use the html:reset. > > > > I do use html:hidden tag as you suggested but for scalability and other > > > > reasons I do not use a session scoped form but use request scope. > > > > > > > > -JC > > > > > > > > -----Original Message----- > > > > From: Pedone, Tim [mailto:[EMAIL PROTECTED]] > > > > Sent: Thursday, February 14, 2002 3:44 PM > > > > To: 'Struts Users Mailing List' > > > > Subject: RE: Request: Property vs Attribute > > > > > > > > Is userID a member of your ActionForm subclass? If you make it a member > > of > > > > your ActionForm, it will get maintained (provided you don't wipe it out > > in > > > > your reset() method) for you if you have a <html:hidden > > > property="userID"/> > > > > tag in your jsp. I tried this using a session scoped form and it > worked. > > > > > > > > Tim > > > > > > > > -----Original Message----- > > > > From: Jakkampudi, ChandraseKhar [mailto:[EMAIL PROTECTED]] > > > > Sent: Thursday, February 14, 2002 12:29 PM > > > > To: 'Struts Users Mailing List' > > > > Subject: Request: Property vs Attribute > > > > > > > > I have a jsp that displays details of a user. The display is in a form > > > that > > > > can also be used to modify user details. Access to this page is via a > > url > > > > like http://xyz.com/userDetails.do?userID=123. However the userid is > not > > a > > > > editable field and I use a hidden variable to pass this information > back > > > to > > > > the server fo updates. On validation, if I return to the input page, > the > > > > hidden variable is lost. So I use request.setAttribute("userID", "123") > > in > > > > the perform method of the action before redirecting to set the > > information > > > > back. > > > > > > > > However because of this I have to have this conditional at the top of > my > > > jsp > > > > > > > > String userID = request.getParameter("userID"); > > > > if (userID == null){ > > > > userID = (String) request.getAttribute("userID"); > > > > } > > > > > > > > This is because the logic:present tag just uses the getParameter > command > > > and > > > > returns false even if the required string is an attribute of the > > request. > > > > I know I can change the source, but it would be difficult to maintain > as > > I > > > > have to remember this fact everytime we do an upgrade. > > > > > > > > Any suggestions on how to implement this better without using > > scriptlets. > > > > > > > > -JC > > > > > > -- > > 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]> > > -- Ted Husted, Husted dot Com, Fairport NY USA. > -- Java Web Development with Struts. > -- Tel +1 585 737-3463. > -- Web http://www.husted.com/struts/ > > -- > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> > __________________________________________________ Do You Yahoo!? Got something to say? Say it better with Yahoo! Video Mail http://mail.yahoo.com -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>