• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
小折腾
博客园    首页    新随笔    联系   管理    订阅  订阅

Integration with FreeMarker( with Tiles)

http://tiles.apache.org/framework/tutorial/integration/freemarker.html

 

FreeMarker is a templating framework that can be used as a replacement for JavaServer Pages (JSP). Tiles can be used with FreeMarker through the use of Tiles FreeMarker package.

Configuration

To use FreeMarker together with Tiles

  • Add FreeMarker jars (tested with FreeMarker 2.3.15).
  • Add tiles-template-x.x.x.jar and tiles-freemarker-x.x.x.jar files to your application
  • To access ".ftl" files from HTTP requests, add this piece of configuration in web.xml(the parameters can be modified as needed).
    <servlet>
        <servlet-name>freemarker</servlet-name>
        <servlet-class>org.apache.tiles.freemarker.servlet.TilesFreemarkerServlet</servlet-class>
    
        <!-- FreemarkerServlet settings: -->
        <init-param>
            <param-name>TemplatePath</param-name>
            <param-value>/</param-value>
        </init-param>
        <init-param>
            <param-name>NoCache</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>ContentType</param-name>
            <param-value>text/html</param-value>
        </init-param>
    
        <!-- FreeMarker settings: -->
        <init-param>
            <param-name>template_update_delay</param-name>
            <param-value>0</param-value> <!-- 0 is for development only! Use higher value otherwise. -->
        </init-param>
        <init-param>
            <param-name>default_encoding</param-name>
            <param-value>ISO-8859-1</param-value>
        </init-param>
        <init-param>
            <param-name>number_format</param-name>
            <param-value>0.##########</param-value>
        </init-param>
    
        <load-on-startup>5</load-on-startup>
    </servlet>
  • To access ".ftl" files as attributes, register FreeMarkerAttributeRenderer this way (only available in a servlet environment):
    @Override
    protected void registerAttributeRenderers(
            BasicRendererFactory rendererFactory, TilesApplicationContext applicationContext,
            TilesRequestContextFactory contextFactory,
            TilesContainer container, AttributeEvaluator evaluator) {
        super.registerAttributeRenderers(rendererFactory, applicationContext, contextFactory,
                container, evaluator);
        FreeMarkerAttributeRenderer freemarkerRenderer = new FreeMarkerAttributeRenderer();
        freemarkerRenderer.setApplicationContext(applicationContext);
        freemarkerRenderer.setEvaluator(evaluator);
        freemarkerRenderer.setRequestContextFactory(contextFactory);
        freemarkerRenderer.setParameter("TemplatePath", "/");
        freemarkerRenderer.setParameter("NoCache", "true");
        freemarkerRenderer.setParameter("ContentType", "text/html");
        freemarkerRenderer.setParameter("template_update_delay", "0");
        freemarkerRenderer.setParameter("default_encoding", "ISO-8859-1");
        freemarkerRenderer.setParameter("number_format", "0.##########");
        freemarkerRenderer.commit();
        rendererFactory.registerRenderer("freemarker", freemarkerRenderer);
    }

    This way you can specify an attribute that is rendered directly using this syntax:

    <put-attribute name="myAttribute" value="/pages/myPage.ftl" type="freemarker" />

Usage in FreeMarker templates

Tiles directives are available this way:

<@tiles.nameOfDirective>
  Other stuff...
</@tiles.nameOfDirective>
posted @ 2012-05-29 16:27  小折腾  阅读(1066)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3