【问题标题】:Spring MVC, Tiles 3, and Freemarker IntegrationSpring MVC、Tiles 3 和 Freemarker 集成
【发布时间】:2014-11-12 17:54:46
【问题描述】:

我已将 Freemarker 集成到现有的 Spring MVC 和 Tiles 3 应用程序中,发现它无法读取 Tile 定义文件。它直接读取内容切片,这是在切片定义文件中配置的 3 个切片之一,绕过切片定义文件。我怎样才能让它读取瓷砖定义文件?这是我的代码:

applicationContext.xml

<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

<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>

ma​​in_template.ftl

<body>

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

    <tiles:insertAttribute name="content" />

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

</body>

home.ftl

<#import "spring.ftl" as spring />



Hello world!  


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

header.ftl

<#import "spring.ftl" as spring />

This is header

【问题讨论】:

标签: spring-mvc freemarker tiles


【解决方案1】:

我有同样的问题。我通过将它添加到我的 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">

并使用

<@tiles.insertAttribute name="header" />

从瓦片定义中插入一些东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 2010-09-18
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多