解析模板“/index.html”时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问

Posted

技术标签:

【中文标题】解析模板“/index.html”时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问【英文标题】:Error resolving template "/index.html", template might not exist or might not be accessible by any of the configured Template Resolvers 【发布时间】:2018-03-05 21:24:13 【问题描述】:

我正在尝试使用 spring-boot 解析一个简单的 index.html 文件。如果我输入 localhost:8080/index.html 它会解决,否则我会得到白色错误页面。

我已将它发布在 GIT 上;这是一个非常简单的应用程序:Git Hub Link

问题似乎出在模型上:

表单模型:

@Entity
@Table(name="applicant")
public class FormModel 

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    private String name;
    @Email
    private String email;
    @Size(min=2, max=200)
    private String description;

    public String getName() 
        return name;
    

    @Required
    public void setName(String name) 
        this.name = name;
    

    public String getEmail() 
        return email;
    

    @Required
    public void setEmail(String email) 
        this.email = email;
    

    public String getDescription() 
        return description;
    

    @Required
    public void setDescription(String description) 
        this.description = description;
    

家庭控制器:

@RestController
public class Home 

    @RequestMapping(value = "/", method = RequestMethod.GET, RequestMethod.POST )
    public ModelAndView index()

        ModelAndView modelAndView = new ModelAndView("/index.html");

        return modelAndView;
    


【问题讨论】:

【参考方案1】:

查看您的源代码后

你的标题问题的答案是:

    您使用 Thymeleaf,它可以解析模板 index,但不能解析 /index.html。 Thymeleaf 的 TemplateResolver 负责加载 HTML 标记。默认情况下,它将模板名称(例如index)转换为资源名称(例如classpath:/templates/index.htmlWEB-INF/templates/index.html)。

    这样的事情应该可以工作:

    ModelAndView modelAndView = new ModelAndView("index");

但这对你来说解决不了多少问题,因为你还有其他几件事要处理

    图片显示您使用@ 作为对象,但您可能应该使用$,看看docs

    Thymeleaf 实际上使用 xml 格式,所以你不能使用你的 html 而只是在其中添加一些 thymeleaf 形式。您需要为每个<hr/><br/> 等添加结束标签。

    您使用像 ../static/js/some.js 这样的 html 链接,但您应该使用 /js/some.js 获取更多信息,可以通过谷歌搜索 spring 如何解析静态文件

这里是一些修复的 repo:https://github.com/varren/Portfolio

【讨论】:

在不使用../js/sometime时,我一直在生产服务器上遇到问题 @Drew1208 是的,可以使用相对路径,关键是spring path资源解析器会尝试在resources/static/static/js/some.js中找到/static/js/some.js的url,这里的关键是文件夹路径中的double static

以上是关于解析模板“/index.html”时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问的主要内容,如果未能解决你的问题,请参考以下文章

解析模板“~fragments/header”时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问

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

解析模板时出错 [/],模板可能不存在或可能无法被任何已配置的模板解析器访问

解析模板“欢迎”时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问

解析模板 [registration] 时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问

解析模板“home”时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问