我使用 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
更多推荐
解析模板“页面"时出错,模板可能不存在或可能无法被任何配置的模板解析器访问
发布评论