Проблема
Недавно только что преобразовали ссылку://spring-mvc/spring-mvc-form-processing-example/[Spring MVC xml-based form form controller]в ссылку://spring-mvc/spring-mvc-form-processing-annotation -example/[контроллер формы на основе аннотаций]и отображает следующее сообщение об ошибке. + + __SEVERE: Ни BindingResult, ни простой целевой объект для имени бина «customerForm» не доступны в качестве атрибута запроса + java.lang.IllegalStateException: Ни BindingResult, ни простой целевой объект для имени бина «customerForm» не доступны в качестве атрибута запроса + + + Выше сообщение об ошибке ясно указал, что bean-компонент customerForm не существует, и я на 100% уверен, что средство разрешения представления настроено правильно и страница представления «CustomerForm.jsp» существует.
Form Controller
@Controller
@RequestMapping("/customer.htm")
public class CustomerController{
@RequestMapping(method = RequestMethod.GET)
public String initForm(ModelMap model){
//return form view
return "CustomerForm";
}
View Resolver
...
<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. Чтобы решить эту проблему, просто убедитесь, что имя сопоставления совпадает или существует.
ссылка://тег/spring-mvc/[spring mvc]