Freemarker对于多风格的应用

原创 2007年10月09日 09:55:00

论坛产品或者博客产品大多都支持多套模板,用户可以进行随意切换来体验各种风格。OSPod.Forum 提供了截然不同的两套用户体验风格,在不同的模板之间需要有一些公用的地方,或者通过扩展其中一套模板或者进行微调之后达到一种新的风格,如基于蓝色模板修改成为黑色比较酷的风格等等?如何保障部分模板之间的复用呢?

freemarker.template.Configuration给我们提供了模板装载机制的修改方案,通过config.setTemplateLoader(TemplateLoaderImp) ,我们可以告诉Freemarker使用哪个模板装载类,OK,这样需要实现我们自己的模板转载类。

OSPod.Forum通过扩展TemplateLoader来提供模板装载机制,该类的基础原型是基于ServletContextTemplateLoader来进行实现,在该类基础上覆盖findTemplateSource方法实现,参考如下:

public Object findTemplateSource(String name) throws IOException ...{
      String fullPath 
= path + name;
      
// First try to open as plain file (to bypass servlet container resource caches).
      try ...{
          String realPath 
= servletContext.getRealPath(fullPath);
          
if (realPath != null...{
              File file 
= new File(realPath);
              
if(!file.isFile()) ...{  //如果找不到模板
                  String tplStyle = (String)ActionContext.getContext().getAttributeMap().get( "_tplStyle" );
                  
if(!Checker.isEmpty( tplStyle ))...{
                                          
//替换模板寻找路径
                      String refStyle = GeneralConfigRepository.getTemplateExtendFrom(tplStyle);
                      realPath 
= realPath.replaceAll( tplStyle, refStyle );
                      file 
= new File(realPath);
                      
if(!file.isFile())
                       
return null;
                  }
else...{
                      
return null;
                  }

              }

              
if(file.canRead()) ...{                    
                  
return file;
              }

          }

      }
 catch (SecurityException e) ...{
          logger.error( 
"获得模版" + fullPath + "错误!", e );
      }

      
          
      
// If it fails, try to open it with servletContext.getResource.
      URL url = null;
      
try ...{
          url 
= servletContext.getResource(fullPath);
      }
 catch(MalformedURLException e) ...{
          logger.warn(
"Could not retrieve resource " + fullPath, e);
          
return null;
      }

      
return url == null ? null : new URLTemplateSource(url);
  }

JS跑马灯效果实现(很好用)

原文地址:http://blog.csdn.net/yangsen251024/article/details/8614305 实现跑马灯效果的JS很多,但是很多不好用,下面介绍一个比较好用的。...
  • tanga842428
  • tanga842428
  • 2017年09月08日 16:13
  • 1906

freemarker 空白处理

1 简介 HTML 和 XML 都不是对空白敏感的,但是这么多多余的空白是很令人头疼的,而且增加处理后的 HTML 文件大小也是没必要的。当然,对于空白敏感的方式的输出这依旧是个大问题。 Fr...
  • qilixiang012
  • qilixiang012
  • 2014年07月14日 14:35
  • 2159

FreeMarker优点和缺点与使用FreeMarker的10个理由

首先给大家简单介绍一下FreeMarker。FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Serv...
  • qq897958555
  • qq897958555
  • 2016年12月10日 20:17
  • 6349

freemarker的使用心得

freemarker虽然很强大但是能熟练使用的人却很少,相信通过这篇文章一定会对freemarker有更深的认识。...
  • chenwill3
  • chenwill3
  • 2014年11月02日 14:08
  • 6522

一篇很全面的freemarker 前端web教程

以下内容全部是网上收集:  FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成:  1,文本:直接输出的部分  2,注释:格式部分,不会输出...
  • gududedabai
  • gududedabai
  • 2017年06月07日 18:09
  • 935

SpringMVC与Freemark整合,多视图完美展示详细完美解决

在霍金与他的伙伴出的新书中有这么一个故事:          金鱼生活在盛满水的圆形缸体中,金鱼看到的外部世界是扭曲的图景。它获得的真实世界的图景也许和我们的不同,但我们如何知道我们的图景就是正...
  • qq383264679
  • qq383264679
  • 2015年09月25日 10:25
  • 4360

FreeMarker在Web应用中的配置

项目中用到了FreeMarker,就上网找了很多有关的知识,自己总结了一下。 一、FreeMarker介绍: FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输...
  • u014756827
  • u014756827
  • 2016年09月06日 22:31
  • 1734

最近在看的freemarker,个人认为有助于理解

freemarker   优点:   1、不能编写java代码,可以实现严格的mvc分离   2、性能非常不错   3、对jsp标签支持良好   4、内置大量常用功能,使用非常方便   5...
  • u011697691
  • u011697691
  • 2014年06月12日 15:45
  • 1333

Freemarker空白处理之微调指令 t、lt、rt

Synopsis DescriptionThese directives, instruct FreeMarker to ignore certain white-space in the line...
  • u010948547
  • u010948547
  • 2015年08月10日 11:57
  • 2938

freemark 条件判断

freemark 条件判断 boolean类型判断valign="top" style="padding-top: 7px;"
  • hw1287789687
  • hw1287789687
  • 2016年05月24日 20:10
  • 7956
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Freemarker对于多风格的应用
举报原因:
原因补充:

(最多只允许输入30个字)