spring-boot - Spring MVC 自动绑定无法访问 thymeleaf 中的地图数据
问题描述
我是java新手,正在尝试在springboot中测试百里香。使用第一个控制器之类的代码,我可以通过 thymeleaf 访问地图中的数据
但无法通过第二个控制器访问地图中的数据。为什么像第二种方法一样声明地图不起作用?有人能帮我吗?谢谢
public class ViewController {
public String index(Map<String, Object> map) {
map.put("hello","Bonjour");
map.put("Users", Arrays.asList("Ken","Yu","JY"));
return "index";
}
}
public class ViewController {
public String index() {
Map<String, Object> map=new HashMap<String, Object>();
map.put("hello","Bonjour");
map.put("Users", Arrays.asList("Ken","Yu","JY"));
return "index";
}
}
解决方案
Springboot 遵循模型视图控制器(MVC)架构。简单地说,模型用于为要渲染的视图提供属性。这里使用 thyme-leaf 作为视图渲染器,同时将模型馈送到 thyme-leaf 模板中。Model、ModelMap 和 ModelAndView 用于定义模型在 Spring MVC 应用程序中。Spring boot 自动负责将视图和模型绑定在一起。
因此,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;
}
推荐阅读
- elasticsearch - 使用 Elasticsearch 从日期直方图中过滤周末
- python - boto2 get_key() 在已知键上返回 None
- typescript - 带有 SonarJS 的声纳扫描仪无法解析打字稿
- yocto - BitBake 将 tmux 包添加到图像
- vuetify.js - vuetify 中的 xs 断点无法正常工作
- python - 从带有条件的 for 循环中动态创建大量列表
- c# - 有什么方法可以确定实体框架 6.3 中正在编辑哪些实体
- python - 用二维坐标之间的距离填充一个 numpy 零数组
- keras - tf.keras 如何保存 ModelCheckPoint 对象
- http - http2:收到 GOAWAY [FrameHeader GOAWAY len=8],开始正常关机