SimpleFormController , Validator, 简单的register.jsp上有简单的<spring:bind> tag .
出错如下:
javax.servlet.ServletException: ModelAndView [ModelAndView: materialized View is [null]; model is {command=org.springframework.samples.jpetstore.web.srx.register.RegisterInfo@c71c00, org.springframework.validation.BindException.command=org.springframework.validation.BindException: BindException: 1 errors; Field error in object 'command' on field 'username': rejected value [sdf]; codes [less4chars.command.username,less4chars.username,less4chars.java.lang.String,less4chars]; arguments []; default message [?????????4???]}] neither contains a view name nor a View object in servlet with name 'petstore' org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:980) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:764) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:681) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:395) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:359) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
原因往往是servletname-servlet.xml中Controller或者相关validator bean的属性名字写错了,本例,
<!-- registe validator -->
<bean id="RegisterValidator" class="org.springframework.samples.jpetstore.web.srx.register.RegisterValidator"/>
<bean name="/myregister.do" class="org.springframework.samples.jpetstore.web.srx.register.RegisterAction">
<!-- <property name="commandName"><value>kao</value></property> -->
<property name="commandClass">
<value>org.springframework.samples.jpetstore.web.srx.register.RegisterInfo</value>
</property>
<property name="validator">
<ref local="RegisterValidator"/>
</property>
<property name="formview"> // 这里应该是formView,改后就运行正常。
<value>/register/register</value>
</property>
<property name="success_view">
<value>/register/registerSuccess</value>
</property>
</bean>
此错误一般很难发现,不好调试。