問題

最近、

Spring MVC xmlベースのフォームコントローラ

をlink://spring-mvc/spring-mvc-form-handling-annotation -example/[注釈ベースのフォームコントローラ]を開き、次のエラーメッセージを表示します。 __SEVERE:ビーン名 ‘customerForm’のBindingResultもプレーン・ターゲット・オブジェクトもリクエスト属性として使用できませんjava.lang.IllegalStateException:ビーン・ネーム ‘customerForm’のBindingResultもプレーン・ターゲット・オブジェクトもrequest属性として使用できません上記のエラー・メッセージでは、customerForm “Beanは存在せず、ビューリゾルバが正しく設定され、” CustomerForm.jsp “ビューページが存在することを100%確信しています。


Formコントローラ

@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クラスでも同様の事例がかなり発生しています。それを解決するには、マッピング名が一致しているか存在していることを確認してください。