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

Posted

技术标签:

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

我正在使用 mvc + java HttpServlet + Thymeleaf 模板,但这是错误的。文件 home.html 已经存在。

我的代码如下:

        ServletContextTemplateResolver templateResolver 
                    = new ServletContextTemplateResolver();
        // XHTML is the default mode, but we will set it anyway for better understanding of code
        templateResolver.setTemplateMode("HTML5");
        templateResolver.setPrefix("D:\\development\\projects\\fpt.eclick.framework.web.thyme\\views\\");
        templateResolver.setSuffix(".html");
        templateResolver.setCacheTTLMs(3600000L);
        TemplateEngine templateEngine = new TemplateEngine();
        templateEngine.setTemplateResolver(templateResolver);
        WebContext ctx = new WebContext(request, response, request.getServletContext(), request.getLocale());

        try 
            templateEngine.process("home", ctx, response.getWriter());
         catch (IOException e) 
            // TODO Auto-generated catch block
            e.printStackTrace();
        
        response.setContentType("text/html;charset=UTF-8");
        response.setHeader("Pragma", "no-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setDateHeader("Expires", 1000);

我使用的 Freemarker 与此类似,而且做得很好。

非常感谢

【问题讨论】:

【参考方案1】:

问题在于模板目录的位置(前缀)。将其更改为 Web 应用程序的上下文根中可用的那个,例如/WEB-INF/templates.

【讨论】:

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

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

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

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

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

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

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