`
balaschen
  • 浏览: 190189 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

FreeMarker解析字符串模板

    博客分类:
  • MVC
阅读更多
  1. /**
     * Created: 2007-2-1
     * Modified: 2007-2-1
     *
     * Author: Keven Chen
     */
    package freemarker.loader;

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

    import freemarker.cache.TemplateLoader;

    /**
     * @author Keven Chen
     * @version $Revision 1.0 $
     *
     */
    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);
     }

    }

      
  2. /**  
  3.  * Created: 2007-2-1  
  4.  * Modified: 2007-2-1  
  5.  *   
  6.  * Author: Keven Chen  
  7.  */  
  8. package freemarker;   
  9.   
  10. import java.io.File;   
  11. import java.io.OutputStreamWriter;   
  12. import java.io.StringWriter;   
  13. import java.util.Date;   
  14. import java.util.HashMap;   
  15. import java.util.Map;   
  16.   
  17. import freemarker.loader.ClassPathTemplateLoader;   
  18. import freemarker.loader.StringTemplateLoader;   
  19. import freemarker.template.Configuration;   
  20. import freemarker.template.Template;   
  21.   
  22. /**  
  23.  * @author Keven Chen  
  24.  * @version $Revision 1.0 $  
  25.  *  
  26.  */  
  27. public class Test {   
  28.   
  29.     public static void main(String[] args) throws Exception {   
  30.         Configuration cfg = new Configuration();   
  31.         cfg.setTemplateLoader(new StringTemplateLoader("欢迎:${user}"));   
  32.         cfg.setDefaultEncoding("UTF-8");   
  33.   
  34.         Template template = cfg.getTemplate("");   
  35.            
  36.         Map root = new HashMap();   
  37.         root.put("user""Keven Chen");   
  38.            
  39.         StringWriter writer = new StringWriter();   
  40.         template.process(root, writer);   
  41.         System.out.println(writer.toString());         
  42.     }   
  43.   
  44. }   
  45.   
分享到:
评论
3 楼 can4you 2010-09-19  
/**
 * Created: 2007-2-1
 * Modified: 2007-2-1
 * 
 * Author: Keven Chen
 */
package freemarker.loader;

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

import freemarker.cache.TemplateLoader;

/**
 * @author Keven Chen
 * @version $Revision 1.0 $
 *
 */
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);
 }

}

   
/**   
 * Created: 2007-2-1   
 * Modified: 2007-2-1   
 *    
 * Author: Keven Chen   
 */   
package freemarker;    
   
import java.io.File;    
import java.io.OutputStreamWriter;    
import java.io.StringWriter;    
import java.util.Date;    
import java.util.HashMap;    
import java.util.Map;    
   
import freemarker.loader.ClassPathTemplateLoader;    
import freemarker.loader.StringTemplateLoader;    
import freemarker.template.Configuration;    
import freemarker.template.Template;    
   
/**   
 * @author Keven Chen   
 * @version $Revision 1.0 $   
 *   
 */   
public class Test {    
   
    public static void main(String[] args) throws Exception {    
        Configuration cfg = new Configuration();    
        cfg.setTemplateLoader(new StringTemplateLoader("欢迎:${user}"));    
        cfg.setDefaultEncoding("UTF-8");    
   
        Template template = cfg.getTemplate("");    
            
        Map root = new HashMap();    
        root.put("user", "Keven Chen");    
            
        StringWriter writer = new StringWriter();    
        template.process(root, writer);    
        System.out.println(writer.toString());          
    }    
   
} 
2 楼 抛出异常的爱 2010-03-01  
Map valuesMap = HashMap();
valuesMap.put("animal", "quick brown fox");
valuesMap.put("target", "lazy dog");
String templateString = "The ${animal} jumped over the ${target}.";
StrSubstitutor sub = new StrSubstitutor(valuesMap);
String resolvedString = sub.replace(templateString);

google了一下....只找到您的贴子...
以上引自
http://commons.apache.org/lang/api-release/org/apache/commons/lang/text/StrSubstitutor.html

为了以后再找方便.....
1 楼 lunzi 2009-03-17  
good! 正好需要,谢了!

相关推荐

    freemarker如何解析文本内容

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

    freemarker语法完整版

    字符串 Freemarker代码 <#switch being.size> <#case "small"> This will be processed if it is small <#break> <#case "medium"> This will be processed if it is medium <#break> ...

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

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

    freemarker总结

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

    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