当前位置: 首页 > 知识库问答 >
问题:

解析模板[]时出错,模板可能不存在,或者任何已配置的模板解析程序都无法访问模板

有宏邈
2023-03-14
@Controller
public class HtmlController {

  @GetMapping(value = "/", produces = MediaType.TEXT_HTML_VALUE)
  public Employee html() {
    return Employee.builder()
      .name("test")
      .build();
  }
}

Circular view path [login]: would dispatch back to the current handler URL [/login] again

现在我得到了另一个错误:

There was an unexpected error (type=Internal Server Error, status=500).
Error resolving template [], template might not exist or might not be accessible by any of the configured Template Resolvers

有人能帮我解释为什么我必须依赖thymleaf来提供html内容,为什么我会得到这个错误。

共有1个答案

孔征
2023-03-14

为什么我必须依赖Thymeleaf来提供HTML内容

你没有。您可以通过其他方式来完成,您只需告诉Spring您正在做的事情,即告诉它返回值是响应本身,而不是用于生成响应的视图的名称。

正如Spring文档所说:

你可以,例如。

>

  • 使用Thymeleaf模板(这是推荐的方法):

    @GetMapping(path = "/", produces = MediaType.TEXT_HTML_VALUE)
    public String html(Model model) { // <== changed return type, added parameter
        Employee employee = Employee.builder()
            .name("test")
            .build();
        model.addAttribute("employee", employee);
        return "employeedetail"; // view name, aka template base name
    }
    

    Employee添加字符串toHtml()方法,然后执行以下操作:

    @GetMapping(path = "/", produces = MediaType.TEXT_HTML_VALUE)
    @ResponseBody // <== added annotation
    public String html() { // <== changed return type (HTML is text, i.e. a String)
        return Employee.builder()
            .name("test")
            .build()
            .toHtml(); // <== added call to build HTML content
    }
    
    @GetMapping(path = "/", produces = MediaType.TEXT_HTML_VALUE)
    @ResponseBody // <== added annotation
    public Employee html() {
        return Employee.builder()
            .name("test")
            .build();
    }
    

  •  类似资料: