问题
最近,刚刚将基于Spring MVC xml的表单控制器转换为基于 注释的表单控制器 ,并遇到了以下错误消息。
严重:Bean名称“ customerForm”的BindingResult或普通目标对象都不能用作请求属性
java.lang.IllegalStateException:BeanResult'customerForm'的BindingResult和普通目标对象都不可用作请求属性
上面的错误消息清楚地表明“ customerForm” bean不存在,并且我100%确保正确配置了视图解析器,并且存在“ CustomerForm.jsp”视图页面。
表单控制器
@Controller
@RequestMapping("/customer.htm")
public class CustomerController{
@RequestMapping(method = RequestMethod.GET)
public String initForm(ModelMap model){
//return form view
return "CustomerForm";
}
查看解析器
...
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
<property name="prefix">
<value>/WEB-INF/pages/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
解
导致的根本原因是JSP页面中的视图名称不正确,请参见下文。
<form:form method="POST" commandName="customerForm">
控制器映射中不再存在“ customerForm”,请参见注释映射@RequestMapping(“ / customer.htm”) ,应将其更改为“ customer”。
<form:form method="POST" commandName="customer">
类似情况
我已经看到很多类似的情况也发生在验证器或SimpleFormController类中。 要解决此问题,只需确保映射名称匹配或存在。
标签: 春天MVC