Once again, the solution worked. Thanks a bunch. I am learning, the good way. :)
~rk Matt Raible-3 wrote: > > If you have Controller, you're not using Struts - you're using Spring MVC. > ;-) > > If you look at the latest code for UserFormController.java in > Subversion, we've changed the formBackingObject method so it > re-fetches the user from the database before populating it with > request parameters. If you change your code to match, it should solve > this problem for you: > > protected Object formBackingObject(HttpServletRequest request) > throws Exception { > > if (!isFormSubmission(request)) { > String userId = request.getParameter("id"); > > // if user logged in with remember me, display a warning > that they can't change passwords > log.debug("checking for remember me login..."); > > AuthenticationTrustResolver resolver = new > AuthenticationTrustResolverImpl(); > SecurityContext ctx = SecurityContextHolder.getContext(); > > if (ctx.getAuthentication() != null) { > Authentication auth = ctx.getAuthentication(); > > if (resolver.isRememberMe(auth)) { > request.getSession().setAttribute("cookieLogin", > "true"); > > // add warning message > saveMessage(request, > getText("userProfile.cookieLogin", request.getLocale())); > } > } > > User user; > if (userId == null && !isAdd(request)) { > user = > getUserManager().getUserByUsername(request.getRemoteUser()); > } else if (!StringUtils.isBlank(userId) && > !"".equals(request.getParameter("version"))) { > user = getUserManager().getUser(userId); > } else { > user = new User(); > user.addRole(new Role(Constants.USER_ROLE)); > } > > user.setConfirmPassword(user.getPassword()); > > return user; > } else if (request.getParameter("id") != null && > !"".equals(request.getParameter("id")) > && request.getParameter("cancel") == null) { > // populate user object from database, so all fields don't > need to be hidden fields in form > return getUserManager().getUser(request.getParameter("id")); > } > > return super.formBackingObject(request); > } > > Matt > > > On 2/14/07, 23455432 <[EMAIL PROTECTED]> wrote: >> >> I think I must be missing something. I only have xdoclet tags in my >> User.java >> and Person.java >> >> My UserController and UserFormController don't have any tags - are those >> the >> files you were referrign to? >> >> They do use the request to get information. Should I change that to >> session? >> >> >> Matt Raible-3 wrote: >> > >> > You could do this for your person list, but it'd be a pain because >> > you'd have to use the <nested:*> tag and write out all your properties >> > properly. The easier thing to do is look in your XDoclet tags at the >> > top of your UserAction.java and change request to session. >> > >> > Matt >> > >> > On 2/14/07, 23455432 <[EMAIL PROTECTED]> wrote: >> >> >> >> I am using STruts. In which case, I should put the form in session. >> What >> >> does >> >> that mean? I noticed that in the form there are some hidden inputs >> like >> >> >> >> <form:hidden path="accountExpired"/> >> >> >> >> Should I do the same for my personList? >> >> >> >> thanks. >> >> >> >> >> >> >> >> Matt Raible-3 wrote: >> >> > >> >> > On 2/14/07, 23455432 <[EMAIL PROTECTED]> wrote: >> >> >> >> >> >> I have a user object that contains many persons in a one-to-many >> bag >> >> >> relationship. >> >> >> >> >> >> The relationship is set up as follows: >> >> >> >> >> >> // USER class >> >> >> /** >> >> >> * @hibernate.bag name="persons" lazy="false" >> >> cascade="save-update" >> >> >> * @hibernate.collection-key column="user_id" >> >> >> * @hibernate.collection-one-to-many >> >> class="org.appfuse.model.Person" >> >> >> */ >> >> >> public List getPersons(){..... >> >> >> >> >> >> >> >> >> private Long userId; >> >> >> >> >> >> /** >> >> >> * @hibernate.property column="user_id" >> >> >> */ >> >> >> public Long getUserId(){ >> >> >> return userId; >> >> >> >> >> >> >> >> >> So the person table has a user_id column that tells me what user >> the >> >> >> person >> >> >> belongs to. >> >> >> >> >> >> Whenever I edit the profile of the user, the persons disappear from >> >> the >> >> >> users person list because in the DB the user_id column for the >> person >> >> >> gets >> >> >> set to NULL. I am not sure why this is happening. I think it may be >> >> the >> >> >> cascade options. >> >> > >> >> > This happens likely because you're not holding the nested persons as >> >> > hidden fields. Since the form is in request scope, anything not in >> >> > hidden fields gets set to null. If you're not using Struts 1.x, >> other >> >> > frameworks have ways of repopulating the object before setting its >> >> > values from request parameters. If you're are using Struts 1.x, you >> >> > can put the form in the session, or programmatically refetch the >> >> > object from your database and reset the persons on your user. >> >> > >> >> >> >> >> >> Also, if I make changes to the user object, how can I get those >> >> changes >> >> >> in >> >> >> the DAO, SERVICE and WEB layer without changing whats already >> there... >> >> >> using >> >> >> appgen. >> >> > >> >> > The DAO, Service and Web layers don't contain a whole lot of >> >> > fine-grained details about your User object. You should be able to >> >> > add/remove properties and make changes in your JSP. If you use a >> good >> >> > IDE and its refactoring capabilities, it should let you know when >> >> > changes need to be made in your Java code. If nothing else, the >> >> > existing unit tests should tell you if you broke something. >> >> > >> >> > Hope this helps, >> >> > >> >> > Matt >> >> > >> >> >> >> >> >> Any direction would be appreciated. >> >> >> >> >> >> Thanks. >> >> >> >> >> >> ~rk >> >> >> -- >> >> >> View this message in context: >> >> >> >> >> >> http://www.nabble.com/Parent-object-updates-child-object-in-one-to-many-tf3229257s2369.html#a8972104 >> >> >> Sent from the AppFuse - User mailing list archive at Nabble.com. >> >> >> >> >> >> >> --------------------------------------------------------------------- >> >> >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> >> >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >> >> >> >> >> >> > >> >> > >> >> > -- >> >> > http://raibledesigns.com >> >> > >> >> > >> --------------------------------------------------------------------- >> >> > To unsubscribe, e-mail: [EMAIL PROTECTED] >> >> > For additional commands, e-mail: [EMAIL PROTECTED] >> >> > >> >> > >> >> > >> >> >> >> -- >> >> View this message in context: >> >> >> http://www.nabble.com/Parent-object-updates-child-object-in-one-to-many-tf3229257s2369.html#a8972237 >> >> Sent from the AppFuse - User mailing list archive at Nabble.com. >> >> >> >> --------------------------------------------------------------------- >> >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >> >> >> > >> > >> > -- >> > http://raibledesigns.com >> > >> > --------------------------------------------------------------------- >> > To unsubscribe, e-mail: [EMAIL PROTECTED] >> > For additional commands, e-mail: [EMAIL PROTECTED] >> > >> > >> > >> >> -- >> View this message in context: >> http://www.nabble.com/Parent-object-updates-child-object-in-one-to-many-tf3229257s2369.html#a8972384 >> Sent from the AppFuse - User mailing list archive at Nabble.com. >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> > > > -- > http://raibledesigns.com > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > -- View this message in context: http://www.nabble.com/Parent-object-updates-child-object-in-one-to-many-tf3229257s2369.html#a8972760 Sent from the AppFuse - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]