freemarker API
来源:互联网 发布:全站程序员 编辑:程序博客网 时间:2024/06/05 17:13
1、configuration配置,在对象中存储常用(应用级别)的设置和定义某些想在所有模板中可以用的变量。
Configuration cfg=new Configuration();设置共享变量,为所有模板所定义的变量。其中name为变量名,obj为变量值。
cfg.setSharedVariable(String name,Object obj);
手动清理缓存
cfg.clearTemplateCache();
模板缓存
freemarker会缓存模板(假设使用Configuration对象的方法创建Template对象),那么当调用getTemlate()时,freemarker不但返回了Template对象,而且还将它存储在了缓存中,那么当下一次以同样的方式调用Template方法时,只会返回缓存中的Template实例,而不会再次加载和解析文件了。
如果更改了模板文件,当下次调用模板时,freemarker会自动重新加载和载入模板,要检查是否更改了内容需要一定的时间,我们可以通过Configuration级别的设置叫"更新延迟"来配置这个时间,设置为0的时候表示更新后立即就可以看到效果。
何时将一个被缓存了的模板清除的实际应用策略是由配置的属性cache-storage确定。
在一级缓存中,组件被强烈引用到特定的最大数目(引用次数最多的组件不会被jvm抛弃,引用次数很少的相反),当超过最大数目时,最近最少使用的组件将被送到二级缓存中,在那里它们很少使用,直到达到最大数目。
第一个参数强烈部分最大的数目,第二个参数为轻微部分最大数目。
cfg.setCacheStorage(new MruCacheStorage(int maxStrongSize,int maxSoftSize));或者使用:
cfg.setSetting(Configuration.CACHE_STORAGE_KEY, "strong:20,soft:250"); //要抛异常
初始值:maxStrongSize=0,maxSoftSize=Integer.MAX_VALUE;
设置编码格式:
cfg.setDefaultEncoding("UTF-8");设置包装器,将对象包装成数据类型。ObjectWrapper是一个接口,其中定义了一个方法TemplateModel wrap(Object obj),可以传入一个Object对象,返回一个TemplateModel对象。
默认包装:
cfg.setObjectWrapper(ObjectWrapper.DEFAULT.WRAPPER);或者
cfg.setObjectWrapper(new DefaultObjectWrapper());也就是默认包装,如利用SimpleScalar替换String,SimpleNumber替换int等。
还一种是:ObjectWrapper.BEANS_WARPPER,这种利用了反射机制。
从多个位置加载模板:
可以将他们封装成一个MultiTemplateLoader的特殊模板加载器,最终传给Configuration对象的setTemplateLoader(TemplateLoader loader)方法。
如从/user/data/templates和/temp/templates两个地方加载模板。
FileTemplateLoader ftl1=new FileTemplateLoader(new File("/temp/templates"));FileTemplateLoader ftl2=new FileTemplateLoader(new File("/user/data/templates"));ClassTemplateLoader ctl1=new ClassTemplateLoader(getClass(),"");TemplateLoader[] loaders=new TemplateLoader[]{ftl1,ftl2,ctl1};MultiTemplateLoader mtl=new MultiTemplateLoader(loaders);cfg.setTemplateLoader(mtl);
- freemarker API
- Freemarker 中文API手册
- freemarker API demo
- freemarker API 之 Configuration介绍
- FreeMarker中文API手册(完整)
- freemarker
- freemarker
- FreeMarker
- FreeMarker
- freemarker
- freemarker
- freemarker
- Freemarker
- freemarker
- freemarker
- FreeMarker
- freeMarker
- freemarker
- Android各种访问权限Permission详解
- android-自定义锁屏界面
- 第六章、SpringMVC学习- 注解式控制器详解(1)-注解式控制器运行流程及处理器定义
- hive中间接实现不等值连接<转>
- 单元测试利器 JUnit 4
- freemarker API
- c++ primer 学习笔记,第二章变量和基本类型
- 视频技术参数指标
- Android -- 设置textview文字居中或者控件居中
- 注释符号
- 程序员应知——关注细节
- 翻出来了12年刚买的金立时候 的金立gn700w介绍
- Sizeof与Strlen的区别与联系
- datawindow简单的动态加列