oops...

of course if I populate the command with the result of a call to formBackingObject(request) it will be the same as it was when I loaded the page!

This hack works.
=== CODE from PersonFormController.java ===
   public ModelAndView handleRequest(HttpServletRequest request,
           HttpServletResponse response) throws Exception {
       if(request.getMethod().equalsIgnoreCase("post")){
return onSubmit(request, response, (Person)super.getCommand(request), new BindException());
       } else {
           return super.handleRequest(request, response);
       }
   }

But it requires me to populate the controller manually out of the request in my onSubmit() method.

=== CODE from PersonFormController.java ===
           person.setFirstName(request.getParameter("firstName"));
           person.setLastName(request.getParameter("lastName"));
           log.debug("The original person is: " + person.toString());

This produces...
=== LOG of person form save ===
[cbeyond] DEBUG [btpool0-2] PersonFormController.onSubmit(59) | entering 'onSubmit' method... [cbeyond] DEBUG [btpool0-2] PersonFormController.onSubmit(74) | The original person is: Person{id=1, firstName='Mathiew', lastName='Raible'} [cbeyond] DEBUG [btpool0-2] PersonFormController.onSubmit(76) | The updated person is: Person{id=1, firstName='Mathiew', lastName='Raible'} [cbeyond] DEBUG [btpool0-2] PersonFormController.showNewForm(337) | Displaying new form

I'm still stumped. Shouldn't the contents of the text fields be bound to the command object on submit?

I've since also tried downloading the project from Google Code, and it won't run either.

Hasn't anyone run this path of the tutorial?

... anyone?

Waldo

Waldo Rochow wrote:
I have added this work-around (read "hack") to get the unit tests to work, and to get the page flow behaving properly.

=== CODE from PersonFormController.java ===
   public ModelAndView handleRequest(HttpServletRequest request,
           HttpServletResponse response) throws Exception {
       if(request.getMethod().equalsIgnoreCase("post")){
return onSubmit(request, response, formBackingObject(request), new BindException());
       } else {
           return super.handleRequest(request, response);
       }
   }
But in doing so, I see that nothing is getting saved to the database. There is no log message from the GenericManager, so I added the following to my PersonFormController.onSubmit().

=== CODE from PersonFormController.java ===
       if (request.getParameter("delete") != null) {
           personManager.remove(person.getId());
           saveMessage(request, getText("person.deleted", locale));
       } else {
*            log.debug("The original person is: " + person.toString());*
*            Person updatedPerson = personManager.save(person);
log.debug("The updated person is: " + updatedPerson.toString());
*            String key = (isNew) ? "person.added" : "person.updated";
           saveMessage(request, getText(key, locale));

           if (!isNew) {
               success = "redirect:personform.html?id=" + person.getId();
           }
       }


It produced the following log even though I changed Matts first name to Mathiew (sorry ;-).
=== LOG of transition from: person form -> persons list ===
[cbeyond] DEBUG [btpool0-1] PersonFormController.onSubmit(59) | entering 'onSubmit' method... [cbeyond] DEBUG [btpool0-1] PersonFormController.onSubmit(71) | The original person is: [EMAIL PROTECTED],firstName=Matt,lastName=Raible] [cbeyond] DEBUG [btpool0-1] PersonFormController.onSubmit(73) | The updated person is: [EMAIL PROTECTED],firstName=Matt,lastName=Raible]


I don't know if this is related, but I suspect it is.

Thanks again,
Waldo

Waldo Rochow wrote:
I'm hoping that someone can help me. I have been running through the spring tutorial with hibernate, and all was going well until the PersonFormController.

The behavior that I'm seeing is that when editing a person, I click on the save button and get redirected to the persons list. The changes that have been made are not persisted, and the log doesn't display the "entering 'onSubmit' method..." log message.

What bothers me is the following line from the logs since my class doesn't implement that method, I am assuming that one of the parents is trying to handle the request.

PersonFormController.processFormSubmission(266) | No errors -> processing submit

I have Googled for hours, and not found anything like this, so I am at my wits end.

Some relevant code and log snippets  follow.

Thanks in advance,
Waldo


=== CODE from personform.jsp ===
...
<form:form commandName="person" method="POST" action="personform.html" id="personForm">
<form:errors path="*" cssClass="error" element="div"/>
<form:hidden path="id"/>
<ul>
   <li>
       <appfuse:label styleClass="desc" key="person.firstName"/>
       <form:errors path="firstName" cssClass="fieldError"/>
<form:input path="firstName" id="firstName" cssClass="text medium"/>
   </li>

   <li>
       <appfuse:label styleClass="desc" key="person.lastName"/>
       <form:errors path="lastName" cssClass="fieldError"/>
<form:input path="lastName" id="lastName" cssClass="text medium"/>
   </li>

   <li class="buttonBar bottom">
<input type="submit" class="button" name="save" value="<fmt:message key="button.save"/>"/>
       <c:if test="${not empty person.id}">
<input type="submit" class="button" name="delete" onclick="return confirmDelete('person')"
           value="<fmt:message key="button.delete"/>" />
       </c:if>
<input type="submit" class="button" name="cancel" value="<fmt:message key="button.cancel"/>"/>
   </li>
</ul>
</form:form>
...

=== CODE from PersonFormController.java ===
public class PersonFormController extends BaseFormController {

...

   public ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object command,
                                BindException errors)
   throws Exception {
       log.debug("entering 'onSubmit' method...");
...
   }

...
}

=== LOG of transition from: persons list -> person form -> persons list === [cbeyond] DEBUG [btpool0-1] PersonFormController.showNewForm(337) | Displaying new form [cbeyond] DEBUG [btpool0-2] PersonFormController.processFormSubmission(266) | No errors -> processing submit [cbeyond] DEBUG [btpool0-1] PersonController.handleRequest(31) | entering 'handleRequest' method...








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