前回の記事で、サーバ側(Controller)で設定した値を JSP で表示するサンプルを掲載した。その際に Spring で用意されている、 Model オブジェクトに JSP で使用したいオブジェクトをセットした。
今回はこの Model に登録されているオブジェクトの一覧を表示する方法、および、識別名をキーにオブジェクトの存在有無を確認するサンプルをメモしておく。
オブジェクトの一覧を表示する
難しいことは何もないので、まずソース(抜粋)。
@RequestMapping(value = "/", method = RequestMethod.GET) public String home(Model model) { // (1) String model.addAttribute("att1", "ほげ"); // (2) List List<String> list = new ArrayList<>(); list.add("リスト1"); list.add("リスト2"); list.add("リスト3"); model.addAttribute("att2", list); // (3) 独自クラス ClassA classA = new ClassA(); classA.setName("山崎屋"); classA.setAge(19); model.addAttribute("att3", classA); // (4) model に登録されているオブジェクトをすべて表示 model.asMap().entrySet().stream().forEach(s -> System.out.println(s)); return "home"; }
(1)~(3) でそれぞれ String/List/独自クラス のオブジェクトを生成し、model に addAttribute している。
そして (4) で model に登録されているオブジェクトの一覧を標準出力に出力している。Stream を使用しているので、見慣れていない人は何をしているのか分かりにくいかも知れないが、ポイントは「model.asMap()」の部分。ここで、model に登録されているオブジェクトをマップにして返している。
Map のキーが識別名(att1、att2、att3)の文字列で、Map の値が登録したオブジェクトである。標準出力にはこのオブジェクトの toString() の戻り値が表示される。
このメソッドを実行した際の標準出力はこちら。
att1=ほげ att2=[リスト1, リスト2, リスト3] att3=org.yyama.web.HomeController$ClassA@20a4e442
ちなみに、Stream を使用しない場合、 (4)は次のようになる。
// (4) model に登録されているオブジェクトをすべて表示 for (Map.Entry<String, Object> e : model.asMap().entrySet()) { System.out.println(e); }
model への登録有無を確認する。
model オブジェクトには containsAttribute というインスタンスメソッドが用意されており、第一引数に識別名を文字列で渡してあげることにより、その識別名が登録されているか否か、bool 値を返してくれる。
サンプルソースはこちら。
@RequestMapping(value = "/", method = RequestMethod.GET) public String home(Model model) { // (1) String model.addAttribute("att1", "ほげ"); // (2) List List<String> list = new ArrayList<>(); list.add("リスト1"); list.add("リスト2"); list.add("リスト3"); model.addAttribute("att2", list); // (3) 独自クラス ClassA classA = new ClassA(); classA.setName("山崎屋"); classA.setAge(19); model.addAttribute("att3", classA); // (5) model への登録有無を確認 System.out.println(model.containsAttribute("att1")); // true System.out.println(model.containsAttribute("att2")); // true System.out.println(model.containsAttribute("att3")); // true System.out.println(model.containsAttribute("att4")); // false return "home"; }
コメントで記載している値が標準出力に出力される。
↓↓↓ Spring Framework 関連の記事をまとめました。
yyama1556.hateblo.jp
今日はここまで。

Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発
- 作者: 株式会社NTTデータ
- 出版社/メーカー: 翔泳社
- 発売日: 2016/07/21
- メディア: 大型本
- この商品を含むブログ (1件) を見る

- 作者: 川場隆
- 出版社/メーカー: 秀和システム
- 発売日: 2015/05/18
- メディア: Kindle版
- この商品を含むブログを見る
![[改訂新版]Spring入門 ――Javaフレームワーク・より良い設計とアーキテクチャ [改訂新版]Spring入門 ――Javaフレームワーク・より良い設計とアーキテクチャ](https://images-fe.ssl-images-amazon.com/images/I/51GCErKCaFL._SL160_.jpg)
[改訂新版]Spring入門 ――Javaフレームワーク・より良い設計とアーキテクチャ
- 作者: 長谷川裕一,大野渉,土岐孝平
- 出版社/メーカー: 技術評論社
- 発売日: 2016/06/14
- メディア: Kindle版
- この商品を含むブログを見る