Spring boot Spring MVC自动绑定无法访问thymeleaf中的地图数据

Spring boot Spring MVC自动绑定无法访问thymeleaf中的地图数据,spring-boot,Spring Boot,我是java新手,曾试图在springboot中测试thymeleaf。 使用像第一个控制器这样的代码,我可以通过thymeleaf访问地图中的数据 但第二个控制器无法访问地图中的数据。 为什么像第二种方法那样声明map不能工作? 有人能帮我吗?thx public class ViewController { public String index(Map<String, Object> map) { map.put("hello","Bonjour"); map.

我是java新手,曾试图在springboot中测试thymeleaf。 使用像第一个控制器这样的代码,我可以通过thymeleaf访问地图中的数据

但第二个控制器无法访问地图中的数据。 为什么像第二种方法那样声明map不能工作? 有人能帮我吗?thx

public class ViewController {
public String index(Map<String, Object> map) {
    map.put("hello","Bonjour");
    map.put("Users", Arrays.asList("Ken","Yu","JY"));       
    return "index";
}
公共类视图控制器{
公共字符串索引(映射){
放在地图上(“你好”,“你好”);
map.put(“Users”,Arrays.asList(“Ken”,“Yu”,“JY”);
返回“索引”;
}
}
公共类视图控制器{
公共字符串索引(){
Map Map=newhashmap();
放在地图上(“你好”,“你好”);
map.put(“Users”,Arrays.asList(“Ken”,“Yu”,“JY”);
返回“索引”;
}
}

Springboot遵循模型-视图-控制器(MVC)体系结构。简单地说,模型用于为要渲染的视图提供属性。在这里,您使用百里香叶作为视图渲染器,同时将模型输入百里香叶模板。模型,模型映射,和ModelAndView用于在SpringMVC应用程序中定义模型。SpringBoot自动将视图和模型绑定在一起

因此,springboot
@RequestMapping
处理程序方法期望模型的方法参数为:

java.util.Map/org.springframework.ui.Model/ org.springframework.ui.ModelMap,用于丰富 向web视图公开

因此,如果您提供一个映射作为方法参数,它会自动绑定视图。在第二种情况下,它不会自动发生。这就是第二种方法不起作用的原因。使用ModelAndView的示例:

@GetMapping("/goToIndexPage")
public ModelAndView methodWithModelAndViewReturn() {
    ModelAndView modelAndView = new ModelAndView("index");
    modelAndView.addObject("message", "Hello");
    return modelAndView;
}

谢谢你的详细解释。现在我知道这是春季MVC自动绑定的问题。更改了标题以更好地反映我的问题。@肯很高兴能帮上忙。
@GetMapping("/goToIndexPage")
public ModelAndView methodWithModelAndViewReturn() {
    ModelAndView modelAndView = new ModelAndView("index");
    modelAndView.addObject("message", "Hello");
    return modelAndView;
}