使用spring boot/thymyleaf重定向到html页面

doinxwow  于 2021-08-20  发布在  Java
关注(0)|答案(3)|浏览(735)

这是我的控制器:

@RestController
public class GraphController {

    @GetMapping("/displayBarGraph")
    public String barGraph(Model model) {
        Map<String, Integer> surveyMap = new LinkedHashMap<>();
        surveyMap.put("Java", 40);
        surveyMap.put("Dev oops", 25);
        surveyMap.put("Python", 20);
        surveyMap.put(".Net", 15);
        model.addAttribute("surveyMap", surveyMap);
        return "barGraph";
    }

    @GetMapping("/displayPieChart")
    public String pieChart(Model model) {
        model.addAttribute("pass", 50);
        model.addAttribute("fail", 50);
        return "pieChart";
    }

这是我的 file.proprieties :

spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.enabled=false

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.html

这些是我的html文件:

但它总是这样引导我:

有什么解决办法吗?

holgip5t

holgip5t1#

背景 spring.thymeleaf.enabledfalse 为spring mvc/web禁用thymeleaf。因此,控制器只返回thymeleaf模板的名称,而不是遍历thymeleaf视图分辨率。
要解决此问题,请卸下 spring.thymeleaf.enabled 属性或将其设置为 true 这是thymeleaf自动配置的默认设置:

spring.thymeleaf.enabled=true

使用 @Controller 而不是 @RestController 使用模板引擎时,您不希望返回值绑定到响应主体:

@Controller
public class GraphController {

    @GetMapping("/displayBarGraph")
    public String barGraph(Model model) {
        // ...
        return "barGraph";
    }

    // ...
}

配置的模板路径需要与存储模板的实际路径匹配。所以要么改变集合 spring.thymeleaf.prefix=classpath:/template/ 或者重命名 template 目录到 templates .
删除这两个属性 spring.mvc.view.prefixspring.mvc.view.suffix 从您的配置。如果您想使用jsp,这是必要的。

vojdkbi0

vojdkbi02#

重命名您的 src/main/resources/template 文件夹到 src/main/resources/templates 文件夹名称中缺少“s”。

wlzqhblo

wlzqhblo3#

为使这项工作正常进行了几项更改。
将@restcontroller更改为@controller,使其返回页面而不是正文中的响应。
将文件夹重命名为templates或更改视图解析器的属性文件中的路径。
不需要启用thymeleaf的属性。

相关问题