Проблема
Недавно только что преобразовали ссылку://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]