gpt4 book ai didi

java - Spring MVC : Passing a Model as an argument to a controller method VS instantiating it explicitly

转载 作者:搜寻专家 更新时间:2023-11-01 02:25:09 24 4
gpt4 key购买 nike

我在我的 MVC Controller 类中创建了两个测试方法。在第一种方法中,Model 作为参数传递,在第二种方法中,我直接实例化它。在这两种方法中,我都向 Model 实例添加了一个属性:

@RequestMapping("/test-modelParam")
public String testMethod1(Model model) {
model.addAttribute("testname", "testvalue");
return "/testview";
}


@RequestMapping("/test-modelInstantiatedExplicitly")
public ModelAndView testMethod2() {
ModelAndView mav = new ModelAndView("/testview");
mav.addObject("testname", "testvalue");
return mav;
}

在这两种情况下都正确填充了 View 。

这两种方法有什么区别吗?如果是这样,在什么情况下更倾向于使用其中一种?

最佳答案

最终没有什么区别,最终一切都将在 ModelAndView 中结束。

当使用 ModelModelMap 作为方法参数时,它会预先填充一些值

  1. 路径变量
  2. 任何 @ModelAttribute 注释方法的结果
  3. Controller 可用的任何@SessionAttribute

简而言之,它是可用于该方法的预填充模型。

Model 始终被创建并与您使用 ModelAndView 添加/创建的模型合并。

关于java - Spring MVC : Passing a Model as an argument to a controller method VS instantiating it explicitly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26147123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com