13

我已经阅读了其他答案,但没关系,谢谢

春天:

<bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine">
    <property name="templateResolver" ref="templateResolver" />
</bean>

<bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver">
    <property name="templateEngine" ref="templateEngine" />
    <property name="order" value="1" />
</bean>

pom.xml:

<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf</artifactId>
    <version>2.0.13</version>
</dependency>
<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring3</artifactId>
    <version>2.0.13</version>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </exclusion>
    </exclusions>
    <scope>compile</scope>
</dependency>

org.thymeleaf.exceptions.TemplateInputException:解析模板“login.html”时出错,模板可能不存在或可能无法被任何已配置的模板解析器访问

4

4 回答 4

7

您需要模板解析器吗?

尝试这样的事情:

<bean id="templateResolver"
      class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
    <property name="prefix" value="/WEB-INF/" />
    <property name="templateMode" value="HTML5" />
 </bean>

确保 Spring MVC 控制器正在返回 /path/after/web-inf/login.html。

于 2013-04-17T20:20:10.583 回答
7

您可能缺少 templateResolver 配置中的“后缀”属性。最好的做法是在模板解析器配置中同时使用路径“前缀”(文件所在的位置)和“后缀”(文件扩展名 - 否则 thymeleaf 尝试仅解析“不带扩展名的登录”) . 像这样:

<beans:bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
    <beans:property name="prefix" value="/WEB-INF/views/"/>
    <beans:property name="suffix" value=".html"/>
    <beans:property name="templateMode" value="HTML5"/>
    <beans:property name="cacheable" value="false"/> <!-- Development only -->
</beans:bean>

并且在控制器中请求登录视图不包括文件扩展名。

@RequestMapping(value = "/login")
public String login(HttpSession session) {
    // do stuff

    // Thymeleaf (delegated by springmvc) will request the "login" view at which 
    // point the prefix and suffix are added to resolve the template location. 
    return "login"; 
}

因此,基于此配置并在基于 maven 的项目中,login.html 应位于

${project_home}/src/main/webapp/WEB-INF/views/login.html
于 2013-04-30T14:47:29.827 回答
0

也许在控制器请求映射中删除斜杠“/”会起作用。

@RequestMapping(value = "login")
于 2017-12-16T04:10:13.267 回答
0

就我而言,事实证明 thymeleaf html 解析器工作不佳并且不接受一行 html 文件。格式化解决了这个问题。

于 2021-03-12T13:23:01.987 回答