且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2023-12-01 18:56:28

是的,可以通过使用 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