自己改了n多个小时还是没解决的问题,最终找到了原因,就是视图解析的问题,还有就是我们所需要导入的依赖的内容。
Spring所用到的thymeleaf,导入依赖
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>3.0.11.RELEASE</version>
</dependency>
在配置类中,添加thymeleaf组件的注册:
让指定路径的页面,经过Thymeleaf引擎翻译后再输出到客户端。
就是这个问题,我研究了一个晚上没看出来,因为我们正常用的视图解析器也是可以解析我们的东西的,但是我们所需要跳转遍历thymeleaf的时候就有问题了,他会不显示出来
如下图所示
而我当时有一个这个视图解析
所以是一直出不来显示的内容的
这个就是可以使用的
@Bean
public ITemplateResolver templateResolver() {
WebApplicationContext webApplicationContext =
ContextLoader.getCurrentWebApplicationContext();
// ServletContextTemplateResolver需要一个ServletContext作为构造参数,可通过 WebApplicationContext
ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(webApplicationContext.getServletContext());
templateResolver.setPrefix("/WEB-INF/templates/");
templateResolver.setSuffix(".html");
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setTemplateMode(TemplateMode.HTML);
return templateResolver;
}
//生成模板引擎并为模板引擎注入模板解析器
@Bean
public SpringTemplateEngine templateEngine(ITemplateResolver templateResolver) {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
return templateEngine;
}
//生成视图解析器并为解析器注入模板引擎
@Bean
public ViewResolver viewResolver(SpringTemplateEngine templateEngine) {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setCharacterEncoding("UTF-8");
viewResolver.setTemplateEngine(templateEngine);
return viewResolver;
}
这里之所以选用"/static/"路径,是为了兼容静态资源路径。静态资源配置的路径为"/static/html",在访问路径设置的是"/html/**",访问静态资源的路径为"/html/……"。这样,在访问thymeleaf构建的html页面时,需要加上"/html/",和普通的静态html页面路径一致。
@GetMapping("/showdata")
public ModelAndView getModelAndView() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("showdata");
Student student=new Student("001","zhangsan");
modelAndView.addObject("stu",student);
return modelAndView;
}
配置好最终就可以显示内容了