テンプレートの利用 (6/6)
作成:2014-06-08 09:41
更新:2014-06-08 09:41
更新:2014-06-08 09:41
■POSTされたデータを処理する
では、コントローラーの処理を作成しましょう。app.groovyを下のリスト欄のように書き換えてください。そして、spring runコマンドで実行し、表示を確かめてみましょう。
http://localhost:8080/ にアクセスすると、入力フィールドが1つあるフォームが表示されます。ここに何か書いて送信すると、メッセージが表示されます。また入力フィールドの値は保持され、送信してもクリアされません。
●@RequestMappingの引数
今回、POSTを利用することになって、メソッドが2つになりました。いずれも@RequestMappingで"/"にマッピングされています。が、書き方が変わっていますね。
value――マッピングするアドレスを指定します。
method――マッピングするメソッド(POST/GET)を指定します。
topメソッドはmethod=RequestMethod.GET、postedではmethod=RequestMethod.POSTが指定されていますね。このRequestMethodの値を使ってHTTPのメソッドの種類を指定します。これで、GETアクセスならtopが、POSTならpostedが呼び出されるようになります。
●送信されたフォームの値
postedメソッドでは、引数が更に増えています。こんな形をしていますね。
これをつけることで、リクエストで送られてきた値が自動的に引数に渡されるようになります。例えばこの例ならば、txt1という名前のパラメータが引数txt1に渡されます。そう、フォームから送信された<input type="text" name="txt1">の値ですね。
フォーム送信された値は、このように@RequestParamを使って引数に受け取って利用することができます。
――これで、表示されたビューから送信先のコントローラーへ、そしてコントローラーから表示するビューへと値を受け渡す基本がわかりました。ごく簡単なWebアプリなら、これだけで十分作れそうですね!
http://localhost:8080/ にアクセスすると、入力フィールドが1つあるフォームが表示されます。ここに何か書いて送信すると、メッセージが表示されます。また入力フィールドの値は保持され、送信してもクリアされません。
●@RequestMappingの引数
今回、POSTを利用することになって、メソッドが2つになりました。いずれも@RequestMappingで"/"にマッピングされています。が、書き方が変わっていますね。
@RequestMapping(value="/",method=RequestMethod.GET)こんな具合に書かれています。単にマッピングするアドレスを指定するだけなら、その値を書くだけですんだのですが、今回はGET/POSTのメソッドの指定も必要となったため、引数が2つに増えました。
@RequestMapping(value="/",method=RequestMethod.POST)
value――マッピングするアドレスを指定します。
method――マッピングするメソッド(POST/GET)を指定します。
topメソッドはmethod=RequestMethod.GET、postedではmethod=RequestMethod.POSTが指定されていますね。このRequestMethodの値を使ってHTTPのメソッドの種類を指定します。これで、GETアクセスならtopが、POSTならpostedが呼び出されるようになります。
●送信されたフォームの値
postedメソッドでは、引数が更に増えています。こんな形をしていますね。
def posted(@RequestParam("txt1")String txt1, ModelAndView mv) {……ModelAndViewの他に、Stringの引数txt1が増えています。これには、@RequestParam("txt1")というアノテーションがつけられています。このアノテーションは、引数がリクエストパラメータの値であることをしていするものです。
これをつけることで、リクエストで送られてきた値が自動的に引数に渡されるようになります。例えばこの例ならば、txt1という名前のパラメータが引数txt1に渡されます。そう、フォームから送信された<input type="text" name="txt1">の値ですね。
フォーム送信された値は、このように@RequestParamを使って引数に受け取って利用することができます。
――これで、表示されたビューから送信先のコントローラーへ、そしてコントローラーから表示するビューへと値を受け渡す基本がわかりました。ごく簡単なWebアプリなら、これだけで十分作れそうですね!
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
@Grab("thymeleaf-spring4") @Controller class MyBootApp { @RequestMapping(value="/",method=RequestMethod.GET) @ResponseBody def top(ModelAndView mv) { mv.setViewName("index") mv.addObject("title","Hello!"); mv.addObject("msg","please type any word..."); mv.addObject("val",""); } @RequestMapping(value="/",method=RequestMethod.POST) @ResponseBody def posted(@RequestParam("txt1")String txt1, ModelAndView mv) { mv.setViewName("index") mv.addObject("title","Hello!"); mv.addObject("msg","you typed: " + txt1); mv.addObject("val",txt1); } }
※関連コンテンツ
「初心者のためのSpring Bootプログラミング入門」に戻る