`
balaschen
  • 浏览: 192627 次
  • 性别: 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_内置函数_数字、字符串、日期格式化.txt

    根据提供的文件信息,我们可以深入探讨Freemarker中的内置...以上是Freemarker中关于数字、字符串和日期格式化的内置函数的详细解析。通过这些内置函数,可以极大地简化模板中的数据处理逻辑,使得模板更加简洁、高效。

    freemarker如何解析文本内容

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

    freemarker模板

    3. **内置函数**: FreeMarker内置了多种函数,如`length()`、`escape_html()`等,用于处理字符串、日期等数据。例如,`${list.length()}`可获取列表的长度,`${string?html}`可将字符串转义以防止XSS攻击。 4. **...

    freemarker语法完整版

    - **字符串**: 由单引号或双引号括起来的文本。 - **数字**: 直接使用数值。 - **日期**: 通常从数据模型中获取。 - **布尔值**: `true` 或 `false`,常用于 `<#if...>` 结构中。 **2. Hashes(哈希表)** - ...

    freemarker wrod 统计图的生成

    4. **FreeMarker渲染**: FreeMarker在处理时会将Base64编码的字符串插入到模板的指定位置,生成包含Base64编码图片的Word文档。 5. **解码并显示图片**: 当Word文档打开时,它会自动解析Base64编码并显示相应的图像...

    Freemarker实现excel导出功能

    3. 模板解析:Freemarker引擎会解析模板文件,并结合数据模型生成最终的输出。 二、Excel导出步骤 1. 创建模板:首先,我们需要创建一个`.ftl`模板文件,该文件定义了Excel表格的结构,包括单元格的值、格式等。...

    springmvc采用freemarker动态生成带图片的word

    5. SpringMVC控制器接收到请求后,将数据模型(包括Base64字符串)传递给Freemarker模板。 6. Freemarker根据模板和数据模型生成最终的Word文档。 7. 将生成的Word文档返回给客户端下载或在线预览。 这个项目的实现...

    freemarker-2.3.23jar

    4. **函数和方法**:Freemarker支持自定义函数和方法,可以使用内置的函数库,如字符串操作、数学计算等,也可以扩展自定义函数来满足特定需求。 5. **模板继承和导入**:通过`<#import>`和`<#extends>`,模板可以...

    freemarker+html生成pdf.zip

    4. **处理模板**:使用`Template`对象的`process()`方法,将数据模型与HTML模板结合,生成HTML字符串。 5. **转换为PDF**:现在,你需要一个工具将HTML转换为PDF。常见的工具有iText、Flying Saucer或Apache PDFBox...

    Java模板引擎之FreeMarker

    首先,你需要从`Configuration`对象中获取模板,然后用它和数据模型一起生成字符串输出: ```java Template template = cfg.getTemplate("template.ftl"); Map, Object> model = new HashMap(); model.put("user", ...

    freemarker语法

    FreeMarker提供了内建的字符串函数来格式化数字,如currency、number、percent等。 3. 日期值的插值同样根据默认格式转换为文本输出,也可以使用内建的字符串函数进行格式化。 4. 布尔值的插值会将表达式结果根据...

    freemarker实例

    4. 使用`Template`对象的`process()`方法,传入数据模型,生成最终的输出字符串。 FreeMarker的语法主要包括: - 变量引用:`${expression}`,expression是Java表达式,用于获取数据模型中的值。 - 文本输出:`...

    freemarker生成xml示例

    5. **输出XML**:生成的XML字符串可以写入文件或直接用于其他操作。 通过上述步骤,你可以利用Freemarker动态生成XML文件。值得注意的是,Freemarker支持条件判断、循环、函数调用等多种复杂逻辑,使得XML生成更加...

    excel 导出 freemarker

    2. 模板渲染:将数据模型与模板结合,通过`Template`对象的`process`方法生成HTML字符串。 3. 转换为Excel:使用Apache POI库,将生成的HTML字符串解析并转换为XLS或XLSX格式的Excel文件。 4. 写入文件:最后,将...

    JSP中截取在线编辑器的字符串的处理.

    此外,对于大型项目,我们还可以考虑在服务器端使用模板引擎(如FreeMarker或Velocity)来处理这种需求,这样可以更好地分离视图和逻辑,提高代码的可维护性。 总之,处理在线编辑器生成的HTML字符串时,我们需要...

    FreeMarker手册-Freemarker 2.3.18

    replace`进行字符串替换,`?upper_case`和`?lower_case`进行大小写转换。此外,还有算术操作符(+、-、*、/、%)、比较操作符(==、!=、<、>、、>=)和逻辑操作符(&&、||、!)。 6. **模板配置** 通过`freemarker...

    新手理解FreeMarker的Project

    - **合并**:当请求到达时,将数据模型与编译后的模板结合,生成最终的输出字符串。 - **安全隔离**:FreeMarker通过安全设计,防止恶意用户通过模板注入代码。 3. **基础语法** - **变量**: `${variable}` ...

    freemarker 2.3.18 中文手册

    string`将非字符串转换为字符串,`?length`获取数组或集合的长度等。 5. **模板配置**:通过`freemarker.properties`配置文件,可以设置模板解析的全局行为,如模板的编码、错误处理模式、日期时间格式等。 6. **...

    实用方便freemarker.jar freemarker架包 freemarker生成excel、word、html、xml例子

    然后,创建一个Java类,设置需要的数据模型,并使用`FreeMarkerTemplateUtils`将模板和数据模型合并,生成最终的HTML字符串。 3. FreeMarker生成XML: 生成XML文档与生成HTML类似,只需将模板设计为XML格式。变量...

Global site tag (gtag.js) - Google Analytics