Spring MVC中的ModelMap与模型

sod*_*dik 7 java spring spring-mvc

我正在比较Spring MVC中的ModelMapModel.除了明显不同之外,首先是一个类,第二个界面是否有任何差异,使得在不同情况下使用一个或另一个更好?

它们主要用于相同的目的(从spring MVC文档):

java.util.Map/org.springframework.ui.Model/org.springframework.ui.ModelMap用于丰富公开给Web视图的隐式模型.

只有我发现它ModelMap有所增强Map,但差异Model仍然不明确.

我可以从ModelMap javadoc得出结论,'Model'是java 5的首选吗?

查看Model接口,了解基于Java-5的接口变体,它具有相同的用途.

然而,它似乎ModelMap不会被弃用或其他东西.但为什么不ModelMap实施Model

Lak*_*aky -1

Model- Java-5 特定的接口,定义模型属性的持有者。主要设计用于向模型添加属性。允许以 java.util.Map 的形式访问整个模型。

简而言之,模型可以提供用于渲染视图的属性。


ModelMap- ModelMap 类基本上是一个 LinkedHashMap。为了方便起见,它添加了一些方法。就像上面的Model接口一样,ModelMap也用于传递值来渲染视图。

ModelMap 的优点是它使我们能够传递值的集合并将这些值视为在 Map 中:

@GetMapping("/printViewPage")
public String passParametersWithModelMap(ModelMap map) {
    map.addAttribute("welcomeMessage", "welcome");
    map.addAttribute("message", "Baeldung");
    return "viewPage";
}
Run Code Online (Sandbox Code Playgroud)

参考;

  • 您好,提供的示例代码似乎没有展示“传递值集合”的能力。当我查看 Model(而不是 ModelMap)的 API 时,我注意到 Model 还提供了名为 add addAllAttributes 的 api,它也允许“传递值的集合”。所以最终我还是没有看出modelMap和Model之间的区别。 (5认同)