66505


[Model, ModelMap and ModelView in Spring MVC |
Baeldung](https://www.baeldung.com/spring-mvc-model-model-map-model-view)

を見ると

コントローラからテンプレート（ビュー）にデータを渡す方法として、

  * `Model`
  * `ModelMap`
  * `ModelAndView`

とあるようです。

しかし  
[spring-petclinic/OwnerController.java at master · spring-projects/spring-
petclinic](https://github.com/spring-projects/spring-
petclinic/blob/master/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java#L59)  
を見ると

[code]

    @GetMapping("/owners/new")
    public String initCreationForm(Map<String, Object> model) {
      Owner owner = new Owner();
      model.put("owner", owner);
      return VIEWS_OWNER_CREATE_OR_UPDATE_FORM;
    }
    
[/code]

や

[code]

    @GetMapping("/owners/find")
    public String initFindForm(Map<String, Object> model) {
      model.put("owner", new Owner());
      return "owners/findOwners";
    }
    
[/code]

というように `Map<String, Object>` を使っています。この `Map` を使った形式はどのようなものでしょうか？

もしかして、`Model`, `ModelMap`, `ModelAndView` のどれかが、 `Map`形式のエイリアスだったりしますか？

* * *

[spring-petclinic/PetController.java at master · spring-projects/spring-
petclinic](https://github.com/spring-projects/spring-
petclinic/blob/master/src/main/java/org/springframework/samples/petclinic/owner/PetController.java#L69)

では

[code]

    public String initCreationForm(Owner owner, ModelMap model) {
        Pet pet = new Pet();
        owner.addPet(pet);
        model.put("pet", pet);
        return VIEWS_PETS_CREATE_OR_UPDATE_FORM;
    }
    
[/code]

`ModelMap`が使われているので、なにか意図的に使い分けされているような気もしています。


CC BY-SA 4.0
2020-05-10T10:49:33.460
66486
2020-05-11T07:30:20.630
2020-05-10T10:56:16.990
9008
9008
question
java spring spring-boot
コントローラからテンプレート（ビュー）にデータを渡すときにMapを使う形式はどのようなものですか？


> もしかして、Model, ModelMap, ModelAndView のどれかが、 Map形式のエイリアスだったりしますか？

いいえ。

Springのドキュメントには、`Model`、`ModelMap`、`ModelAndView`、`Map`の他にも様々な型がパラメーターや戻り値に利用できることが書いてあります。

1.3.3. Handler Methods  
<https://docs.spring.io/spring/docs/current/spring-framework-
reference/web.html#mvc-ann-methods>


CC BY-SA 4.0
2020-05-11T07:30:20.630
66505
2020-05-11T07:30:20.630
21092
66486
answer