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

编程入门 行业动态 更新时间:2024-10-26 02:24:25
本文介绍了解析模板“页面"时出错,模板可能不存在或可能无法被任何配置的模板解析器访问的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我使用 Spring 和 Thymeleaf 和 Tiles 做了一个项目,结构如下:

I did a project using Spring with Thymeleaf and Tiles with the following structure :

我已经配置了我的 Spring-Servlet :

I have configured my Spring-Servlet :

<bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver"> <property name="prefix" value="/WEB-INF/templates/" /> <property name="suffix" value=".html" /> <property name="characterEncoding" value="UTF-8" /> <property name="templateMode" value="HTML5" /> </bean> <bean id="tilesConfigurer" class="org.thymeleaf.extras.tiles2.spring4.web.configurer.ThymeleafTilesConfigurer"> <property name="definitions"> <list> <value>/WEB-INF/tiles-defs.xml</value> </list> </property> </bean> <bean id="tilesViewResolver" class="org.thymeleaf.spring4.view.ThymeleafViewResolver"> <property name="viewClass" value="org.thymeleaf.extras.tiles2.spring4.web.view.ThymeleafTilesView" /> <property name="templateEngine" ref="templateEngine" /> <property name="characterEncoding" value="UTF-8" /> </bean> <bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine"> <property name="templateResolver" ref="templateResolver" /> <property name="additionalDialects"> <set> <bean class="org.thymeleaf.extras.tiles2.dialect.TilesDialect" /> </set> </property> </bean>

我的瓷砖定义是:

<tiles-definitions> <definition name="layout" template="layout"> <put-attribute name="header" value="header" /> <put-attribute name="menu" value="menu" /> <put-attribute name="footer" value="footer" /> <put-attribute name="body" /> </definition> <definition name="usersView" extends="layout"> <put-attribute name="body" value="pages :: users" /> </definition> </tiles-definitions>

这会给我以下错误:

Error resolving template "pages", template might not exist or might not be accessible by any of the configured Template Resolvers

但是当我将 users.html 页面移动到模板文件夹并使我的图块定义为

but when i move the users.html page to the templates folder and make my tiles def as

<definition name="usersView" extends="layout"> <put-attribute name="body" value="users" /> </definition>

它工作正常.

那么问题是 Thymeleaf 可以接受我的文件夹结构吗?如果是,如何?

推荐答案

是的,可以通过使用 viewNames 属性

Yes it can be by using the viewNames property

只需将您的 Spring-Servlet.xml 更改为

just change your Spring-Servlet.xml to

<bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver"> <property name="prefix" value="/WEB-INF/" /> <property name="suffix" value=".html" /> <property name="characterEncoding" value="UTF-8" /> <property name="templateMode" value="HTML5" /> </bean> <bean id="tilesConfigurer" class="org.thymeleaf.extras.tiles2.spring4.web.configurer.ThymeleafTilesConfigurer"> <property name="definitions"> <list> <value>/WEB-INF/tiles-defs.xml</value> </list> </property> </bean> <bean id="tilesViewResolver" class="org.thymeleaf.spring4.view.ThymeleafViewResolver"> <property name="viewClass" value="org.thymeleaf.extras.tiles2.spring4.web.view.ThymeleafTilesView" /> <property name="templateEngine" ref="templateEngine" /> <property name="characterEncoding" value="UTF-8" /> <property name="order" value="1" /> <property name="viewNames" value="templates/*,pages/*" /> </bean> <bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine"> <property name="templateResolver" ref="templateResolver" /> <property name="additionalDialects"> <set> <bean class="org.thymeleaf.extras.tiles2.dialect.TilesDialect" /> </set> </property> </bean>

和您的磁贴定义

<tiles-definitions> <definition name="layout" template="templates/layout"> <put-attribute name="header" value="templates/header" /> <put-attribute name="menu" value="templates/menu" /> <put-attribute name="footer" value="templates/footer" /> <put-attribute name="body" /> </definition> <definition name="pages/usersView" extends="layout"> <put-attribute name="body" value="pages/users" /> </definition> </tiles-definitions>

说明:

我们已经在解析器的前缀中定义了根文件夹

we have defined the root folder in the prefix at the Resolver

<property name="prefix" value="/WEB-INF/" />

并通过

<property name="viewNames" value="templates/*,pages/*" />

到需要的文件夹和你创建的任何新的视图文件夹也应该进入这个属性也重定向或转发

to the needed folders and any new view folder you create should goes in this property also redirect or forward too

更多推荐

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

本文发布于:2023-08-04 03:22:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1292426.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:模板   不存在   页面   quot

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!