【问题标题】:How to link another html page in Spring Boot Thymeleaf Template Engine?如何在 Spring Boot Thymeleaf 模板引擎中链接另一个 html 页面?
【发布时间】:2018-11-26 05:22:58
【问题描述】:

我有以下 Spring Boot 项目结构(使用 Thymeleaf)-

现在,当我尝试从 index.html 引用 defect-details.html 时,找不到它。我尝试了以下所有选项均无济于事:

1.<a th:href="@{/defect-details.html}">

2.<a th:href="@{defect-details.html}">

3.<a href="defect-details.html">

每次都是There was an unexpected error (type=Not Found, status=404)。

请帮忙找出问题。

【问题讨论】:

  • MVC 架构的全部意义在于始终向控制器发送请求,然后控制器再分派给视图。链接到其他视图是一个很大的禁忌。
  • @JBNizet 感谢您指出这一点。我现在已经修改了控制器。

标签: spring spring-mvc spring-boot thymeleaf


【解决方案1】:

(正如 JBNizet 在评论中指出的)根据 MVC 设计架构,最好使用控制器来呈现视图而不是视图到视图的链接。我所要做的就是更新我的 Controller 类:

@RequestMapping("/defect-details")
public String defectDetails() {
    return "defect-details";
}

在 Thymeleaf 模板中:

<a th:href="@{defect-details}">

【讨论】:

  • 你能解释一下,当我们使用控制器来渲染视图而不是视图到视图链接时会发生什么?
【解决方案2】:

您总是可以使用 HTML 标签来链接 Thymeleaf 中的两个页面, 但是,如果不先通过 spring 控制器,您将无法直接从一个 HTML 页面转到特定的 HTML 页面。您必须向 Spring Controller 发出请求才能为您获取该页面。为了完成它:--

1.) &lt;a href="defect-details.html"&gt; //on your index.html

2.) 在您的 Spring 控制器上获取此请求以为您打开 defect-details.html 页面:--

@RequestMapping("/defect-details")
public String defectDetails() {
    return "defect-details"; //defect-details.html page name to open it
}

【讨论】:

    【解决方案3】:

    您也可以使用ModelAndView 类:

    @RequestMapping("/defect-details")
    public ModelAndView defect-details(){
        ModelAndView mv = new ModelAndView();
        mv.setViewName("defect-details");
        return mv;
    }
    

    【讨论】:

      猜你喜欢
      • 2018-02-23
      • 2016-01-26
      • 2020-08-27
      • 2021-12-14
      • 2017-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多