Hi Omar,
I added "bindOnNewForm" property for my controller.
Code:
<bean id="brandEditController"
class="com.web.mvc.BrandEditController">
<property name="commandName"><value>brandCommand</value></property>
<property name="commandClass"><value>com.web.mvc.BrandCommand</value></property>
<property name="sessionForm"><value>true</value></property>
<property name="validator"><ref bean="brandAddValidator"/></property>
<property name="formView"><value>brandEditDef</value></property>
<property name="successView"><value>brandReviewDef</value></property>
<property name="bindOnNewForm"><value>true</value></property>
</bean>
calling getCommand(request) in formBackingObject(HttpServletRequest request) of my controller throws "Form object not found in session" exception msg.
Code:
javax.servlet.ServletException: Form object not found in session
at org.springframework.web.servlet.mvc.AbstractFormController.getCommand(AbstractFormController.java:333)
at com.web.mvc.BrandEditController.formBackingObject(BrandEditController.java:49)
at org.springframework.web.servlet.mvc.AbstractFormController.getErrorsForNewForm(AbstractFormController.java:295)
at org.springframework.web.servlet.mvc.AbstractFormController.showNewForm(AbstractFormController.java:277)
at org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:233)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:128)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:584)
at org.springframework.web.servlet.FrameworkServlet.serviceWrapper(FrameworkServlet.java:366)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:317)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:996)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6452)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3661)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
Then I tried to override getFormSessionAttributeName() method to get proper command name.
Code:
protected String getFormSessionAttributeName() {
return isSessionForm() ? getCommandName() : null;
}
Now I'm able to get the brandCommand object from session, but without the brandNo value that I bound in jsp (using spring:bind). Am I missing something??
Moorthi