Spring MVC - Ни BindingResult, ни простой целевой объект для имени компонента "xxx" не доступны в качестве атрибута запроса.

Проблема

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