Thymeleafテンプレートエンジンを使う (3/4)
作成:2015-04-25 10:27
更新:2015-04-25 10:31
更新:2015-04-25 10:31
■コントローラーを修正する
では、コントローラーを修正しましょう。今回も、先に作成したSampleControllerを書き換えて使うことにしましょう。下のリスト欄のようにソースコードを変更して下さい。
変更が終わったら、実際にプロジェクトを実行し、http://localhost:8080/helo にアクセスしてみましょう。「Helo Page」というタイトルの下に、コントローラー側から渡したテキストが表示されます。
ここではheloメソッドに処理を用意していますね。このメソッドでは、引数にModelインスタンスが渡されるようになっています。そしてaddAttributeで"msg"に値を設定しています。このmsgが、そのままテンプレート側の${msg}の変数に渡され出力される、というわけです。
基本的な仕組みは、JSP利用の場合とまったく同じです。Thymeleafに変わったからといって新たに覚え直すことは特にありません。
先にGroovyを利用した際には、コントローラー側で「ModelAndView」というクラスを引数に使っていました。これも、もちろんJavaのコントローラーでも使うことができます。下に、メソッドの変更例を挙げておきましょう。
ModelAndViewは、その名前の通り、ビューとやり取りする値を管理するModelクラスと、ビューであるViewクラスを合体させたようなものです。これ1つで、ビューとして利用するテンプレートと、それに渡すデータ類をまとめて管理することができます。ここでは、こんなメソッドを使っていますね。
setViewName――使用するビューテンプレートの名前を設定します。
addObject――名前をつけてオブジェクトを保管します。addAttributeに変わるものです。
とりあえず、この2つを覚えておけば基本的な利用はできるようになるでしょう。ModelとModelAndView、どちらも使えるようにしておくとよいでしょう。
変更が終わったら、実際にプロジェクトを実行し、http://localhost:8080/helo にアクセスしてみましょう。「Helo Page」というタイトルの下に、コントローラー側から渡したテキストが表示されます。
ここではheloメソッドに処理を用意していますね。このメソッドでは、引数にModelインスタンスが渡されるようになっています。そしてaddAttributeで"msg"に値を設定しています。このmsgが、そのままテンプレート側の${msg}の変数に渡され出力される、というわけです。
基本的な仕組みは、JSP利用の場合とまったく同じです。Thymeleafに変わったからといって新たに覚え直すことは特にありません。
■ModelAndViewを利用する場合
先にGroovyを利用した際には、コントローラー側で「ModelAndView」というクラスを引数に使っていました。これも、もちろんJavaのコントローラーでも使うことができます。下に、メソッドの変更例を挙げておきましょう。
@RequestMapping("/helo")
public ModelAndView helo(ModelAndView mav) {
mav.setViewName("helo");
mav.addObject("msg","これはThymeleafを使ったサンプルです。");
return mav;
}
ModelAndViewは、その名前の通り、ビューとやり取りする値を管理するModelクラスと、ビューであるViewクラスを合体させたようなものです。これ1つで、ビューとして利用するテンプレートと、それに渡すデータ類をまとめて管理することができます。ここでは、こんなメソッドを使っていますね。
setViewName――使用するビューテンプレートの名前を設定します。
addObject――名前をつけてオブジェクトを保管します。addAttributeに変わるものです。
とりあえず、この2つを覚えておけば基本的な利用はできるようになるでしょう。ModelとModelAndView、どちらも使えるようにしておくとよいでしょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
package com.tuyano.libro.bootapp; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class SampleController { @RequestMapping("/helo") public String helo(Model model) { model.addAttribute("msg","これはThymeleafを使ったサンプルです。"); return "helo"; } } // ※ModelAndViewを利用する場合 // import org.springframework.web.servlet.ModelAndView; を追加 @RequestMapping("/helo") public ModelAndView helo(ModelAndView mav) { mav.setViewName("helo"); mav.addObject("msg","これはThymeleafを使ったサンプルです。"); return mav; }
※関連コンテンツ
「初心者のためのSpring Bootプログラミング入門」に戻る