Model / ModelMap比Spring MVC中的ModelAndView有什么好处?

时间:2017-09-14 14:40:32

标签: spring spring-mvc

Model / ModelMap相对于Spring MVC中的ModelAndView有什么好处?当我们应该使用Model / ModelMap而不是ModelAndView时。

我查了很多网站,但答案不明确!

2 个答案:

答案 0 :(得分:1)

  1. 模型

    让我们从这里最基本的概念开始 - 模型。简而言之,模型可以提供用于渲染视图的属性。

    要提供包含可用数据的视图,我们只需将此数据添加到其Model对象即可。此外,具有属性的地图可以与模型实例合并:

    @GetMapping("/showViewPage")
    public String passParametersWithModel(Model model) {
        Map<String, String> map = new HashMap<>();
        map.put("spring", "mvc");
        model.addAttribute("message", "Baeldung");
        model.mergeAttributes(map);
        return "viewPage";
    }
    
  2. ModelMap

    就像上面的Model接口一样,ModelMap也用于传递值以呈现视图。 ModelMap的优势在于它使我们能够传递一组值并将这些值视为它们在地图上的处理:

    @GetMapping("/printViewPage")
    public String passParametersWithModelMap(ModelMap map) {
        map.addAttribute("welcomeMessage", "welcome");
        map.addAttribute("message", "Baeldung");
        return "viewPage";
    }
    
  3. 的ModelAndView

    将值传递给视图的最终接口是ModelAndView。 这个接口允许我们在一次返回中传递Spring MVC所需的所有信息:

    @GetMapping("/goToViewPage")
    public ModelAndView passParametersWithModelAndView() {
        ModelAndView modelAndView = new ModelAndView("viewPage");
        modelAndView.addObject("message", "Baeldung");
        return modelAndView;
    }
    

答案 1 :(得分:0)

我已经阅读了几页和答案,但似乎并没有真正的差异。味道很重要。 ModelAndView对象包装模型和视图。似乎在返回String时也会隐式执行此操作。使用您喜欢的方式。

您可以在此处阅读有关返回类型的信息: https://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-return-types