很多人都回答说
Model
是一个接口,而ModelView
是一个实现Map
接口的类。
我的困惑是,到底是什么实现了接口
Model
? (我是Spring MVC的初学者所以请耐心等待
您可以参考此线程以获取代码提示。
Model、ModelMap、ModelAndView 有什么区别?
更有趣的是,我看到有人只是使用
Map<>
界面:
// When the path is routed to '/new' below method to be called and view //returned is newPokemon
@RequestMapping(method = RequestMethod.GET, value ="/new")
public String newPokemonForm(Map<String, Object> model) {
Pokemon Pokemon = new Pokemon();
model.put("pokemon", Pokemon);
return "newPokemon";
}
所以我在想这个模型参数,
Map<>
应该声明类型,而modelmap是实际类型?
有人可以跟我澄清一下吗?
非常感谢
----------------------------------更新-------------- --------------
第一个问题,其实在Intellij中查起来很简单。只需打开源代码包,感谢 Elmar Brauch。请参见下面的屏幕截图:
如果您将构建工具配置为下载源代码,则只需打开 Spring 的 Model 界面即可。类型层次结构(您可以在 Eclipse 中打开它)向您显示以下类实现 Model 接口:
在这两个类中,您可以看到它们扩展了某种 Map 类,该类在超类中实现了 Map 接口。
在运行时你可以弄清楚,使用哪种类型作为Map接口的实现。 设置断点并在调试模式下检查或执行如下操作:
@PostMapping
public void postMap(@RequestBody Map map) {
System.out.println(map.getClass());
}
这会为我的带 @RestController 注释的类打印此类型: 类 java.util.LinkedHashMap