首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring、Tiles 3和Freemarker集成

Spring、Tiles 3和Freemarker集成
EN

Stack Overflow用户
提问于 2014-11-12 17:54:46
回答 1查看 2.3K关注 0票数 3

我已经将Freemarker集成到现有的spring和Tiles 3应用程序中,发现它无法读取tiles定义文件。它直接读取内容块,这是在tiles定义文件中配置的3个瓷砖之一,它绕过了瓷砖定义文件。如何才能读取tiles定义文件?这是我的密码:

applicationContext.xml

代码语言:javascript
复制
<mvc:annotation-driven />

<mvc:resources mapping="/resources/**" location="/resources/" />

<bean id="viewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver"/>

<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/tile-defs/view.xml</value>
            <value>/WEB-INF/tile-defs/survey.xml</value>
        </list>
    </property>
</bean>

<bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape"/>

<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPath">
        <value>/WEB-INF/views/</value>
    </property>
    <property name="freemarkerVariables">
        <map>
            <entry key="xml_escape" value-ref="fmXmlEscape"/>
        </map>
    </property>
    <property name="freemarkerSettings">
        <props>
            <prop key="template_update_delay">3</prop>
        </props>
    </property>
</bean>

<bean id="freeMarkerViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    <property name="cache" value="true"/>
    <property name="prefix" value=""/>
    <property name="suffix" value=".ftl"/>
    <property name="exposeSpringMacroHelpers" value="true"/>
    <property name="exposeRequestAttributes" value="true"/>
    <property name="exposeSessionAttributes" value="true"/>
</bean>

tiles-def.xml

代码语言:javascript
复制
<tiles-definitions>
<definition name="template"
    template="/WEB-INF/views/main_template.ftl">
    <put-attribute name="header"
        value="/WEB-INF/views/tiles/header.ftl" />
    <put-attribute name="footer"
        value="/WEB-INF/views/tiles/footer.ftl" />
</definition>
<definition name="home" extends="template">
    <put-attribute name="content" value="/WEB-INF/views/home.ftl" />
</definition>

main_template.ftl

代码语言:javascript
复制
<body>

    <!-- Header -->
    <tiles:insertAttribute name="header" />

    <tiles:insertAttribute name="content" />

    <!-- Footer Page -->
    <tiles:insertAttribute name="footer" />

</body>

home.ftl

代码语言:javascript
复制
<#import "spring.ftl" as spring />



Hello world!  


<P>  The time on the server is ${serverTime}. </P>
<P>  ${message}. </P>

header.ftl

代码语言:javascript
复制
<#import "spring.ftl" as spring />

This is header
EN

回答 1

Stack Overflow用户

发布于 2015-07-01 15:26:23

我也有过同样的问题。我通过将这个添加到我的ftl文件顶部来解决这个问题。

<#assign tiles=JspTaglibs["http://tiles.apache.org/tags-tiles"]> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">

并使用

代码语言:javascript
复制
<@tiles.insertAttribute name="header" />

从“瓷砖”定义中插入一些内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26893380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档