`
xiongzhenhui
  • 浏览: 205530 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

FreeMarker解析字符串模板

 
阅读更多

重写Freemarker的模板加载器即可:
package cn.com.aweb.vote.test.other;

import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.util.HashMap;
import java.util.Map;

import freemarker.cache.TemplateLoader;

public class StringTemplateLoader implements TemplateLoader {

private static final String DEFAULT_TEMPLATE_KEY = "_default_template_key";
private Map templates = new HashMap();

public StringTemplateLoader(String defaultTemplate) {
if (defaultTemplate != null && !defaultTemplate.equals(
"")) {
templates.put(DEFAULT_TEMPLATE_KEY, defaultTemplate);
}
}

public void AddTemplate(String name, String template) {
if (name == null || template == null || name.equals(
"")
|| template.equals(
"")) {
return;
}
if (!templates.containsKey(name)) {
templates.put(name, template);
}
}

public void closeTemplateSource(Object templateSource)
throws IOException {

}

public Object findTemplateSource(String name) throws IOException {
if (name == null || name.equals(
"")) {
name = DEFAULT_TEMPLATE_KEY;
}
return templates.get(name);
}

public long getLastModified(Object templateSource) {
return 0;
}

public Reader getReader(Object templateSource, String encoding)
throws IOException {
return new StringReader((String) templateSource);
}

}

测试类:
package cn.com.aweb.vote.test.other;

import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;

import freemarker.template.Configuration;
import freemarker.template.Template;

public class Test{

public static void main(String[] args) throws Exception {
Configuration cfg = new Configuration();    
        cfg.setTemplateLoader(new StringTemplateLoader(
"hello:${user}"));    
        cfg.setDefaultEncoding(
"UTF-8");    
  
        Template template = cfg.getTemplate(
"");    
            
        Map root = new HashMap();    
        root.put(
"user", "lunzi");    
            
        StringWriter writer = new StringWriter();    
        template.process(root, writer);    
        System.out.println(writer.toString());          
}
}

分享到:
评论
1 楼 houwenhua1987 2012-05-11  
什么破玩意啊,能不能自己实践下再发
#if line.statetype = '0'>
<div class="uclicc0">
${line.statecontent.content}
</div>
</#if>
你解析个这个字符串试试还行吗

相关推荐

    freemarker如何解析文本内容

    纯java的文本解析模板,如可解析SQL语句,解析Excel中动态内容

    freemarker语法完整版

    字符串 Freemarker代码 &lt;#switch being.size&gt; &lt;#case "small"&gt; This will be processed if it is small &lt;#break&gt; &lt;#case "medium"&gt; This will be processed if it is medium &lt;#break&gt; ...

    freemarker总结

    其它的运行符可以作用于数字和日期,但不能作用于字符串,大部分的时候,使用gt等字母运算符代替&gt;会有更好的效果,因为 FreeMarker会把&gt;解释成FTL标签的结束字符,当然,也可以使用括号来避免这种情况,如:(x&gt;y)&gt; ...

    使用freemarker生成word文档,源代码+jar包+说明文档及注意事项

    也就是说,不要在word里首先打完 ${ } 之后,又从其它地方把 string 字符串粘贴至 { } 之间,这样在 word 转化为 xml时,解析会有问题,freemarker解析时,会报错。 /** * @Desc:生成word文件 * @Author:张轮...

    ExpordWord_demo.zip

    java通过freemarker导出包含富文本图片的word...剩下的就是后台操作了,找到你存富文本的字段(html代码)获取里面的img标签,找到图片,并把图片解析为base64字符串,填充到我们只做的模板上就ok了,大体思路就这样了

    spring mvc 3.2 参考文档

    因此你不需要简单的重复拷贝您的业务对象的属性,表单对象中的非类型化的字符串只是处理无效的提交,或者合理的转换字符串。相反,直接绑定的方式更可取。 Spring的视图解析也非常灵活,控制器通常负责准备含有数据...

    java开发常用jar包

    它传往后台的字符串是添加了标签的字符串. SimpleCaptcha-1.1.1.jar 验证码所使用的包 spring-test.jar 与 junit 测试可以利用spring的注入功能,引入spring的事物管理,而且对于测试的数据还可以支持回滚,保存...

    web开发常用jar

    freemarker-2.3.8.jar 模板相关操作需要包 struts2-core-2.0.14.jar struts2核心包 struts2-spring-plugin-2.0.14.jar struts2整合spring所需要的包 xwork-2.0.7.jar xwork核心包 antlr-2.7.6.jar ...

    java开源包1

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包11

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包2

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包3

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包6

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包5

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包10

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包4

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包8

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包7

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包9

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

    java开源包101

    Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以...

Global site tag (gtag.js) - Google Analytics