Spring MVC 4.0 No. 010 任意のクラスで受け取る
今回は、リクエストパラメータを任意のオブジェクトで受け取ります。
最初にデータを受け取るクラスを作成します。フィールド名は受け取るパラメータ名と同じにしておきます。
package com.example.spring.controller; public class Customer { private String name; private String age; // setter、getterは省略 }
コントローラは、@ModelAttributeアノテーションを付けたクラスに、自動的に同名のフィールドにマッピングされます。また、@PathVariableアノテーションと同様に@ModelAttributeアノテーションを付けたインスタンスは、自動的にリクエストスコープに設定されます。@PathVariableと違うのは、オブジェクトそのものがリクエストスコープに設定される点です。
@RequestMapping("/modelForm") public String modelForm() { return "req/modelForm"; } @RequestMapping(value = "/modelRecv", method = RequestMethod.POST) public String modelRecv(@ModelAttribute Customer customer) { return "req/modelRecv"; }
データを送信する、modelForm.jspです。
<%@page contentType="text/html; charset=utf-8" %><%-- --%><!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>サンプル</title> </head> <body> <form action="modelRecv" method="post"> 名前: <input type="text" name="name" size="20"><br> 年齢: <input type="text" name="age" size="20"><br> <input type="submit" value="送信"> </form> </body> </html>
データを受信する、modelRecv.jspです。
<%@page contentType="text/html; charset=utf-8" %><%-- --%><!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>サンプル</title> </head> <body> nameの値は <c:out value="${name}" /><br> ageの値は <c:out value="${age}" /><br> customer.nameの値は <c:out value="${customer.name}" /><br> customer.ageの値は <c:out value="${customer.age}" /><br> </body> </html>
ソースは https://github.com/kuwalab/spring-mvc40 にあります。タグ010が今回のサンプルです。
まとめ http://kuwalab.hatenablog.jp/entry/spring
最初 http://kuwalab.hatenablog.jp/entry/spring_mvc/001
前回 http://kuwalab.hatenablog.jp/entry/spring_mvc/009
次回 http://kuwalab.hatenablog.jp/entry/spring_mvc/011