`
guohf
  • 浏览: 417625 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

FreeMarker 模版引擎执行动态模版

阅读更多
/**
 * FreeMarker 模版引擎工具类
 * 
 * @version 1.0 
 */
public class FreeMarkerUtils {
	
	/**
	 * 执行动态模版
	 * @param templateName
	 * 			模版名称
	 * @param templateContent
	 * 			模版内容
	 * @param encoding
	 * 			编码格式
	 * @param data
	 * 			数据集
	 * @return
	 * @throws Exception
	 */
	public static String executeFreeMarkerFromStringTemplate(String templateName,String templateContent,String encoding, Map<String,Object> data) throws Exception{
		String result = "";
		Writer out = null;
		try{
			Configuration cfg = new Configuration();
			if(data==null) data=new HashMap<String, Object>();
			data.put("DateMethodUtil", new DateMethod());
			out = new StringWriter(2048);
			StringTemplateLoader stringLoader = new StringTemplateLoader();
			stringLoader.putTemplate(templateName,templateContent);
			cfg.setTemplateLoader(stringLoader);
			Template temp = cfg.getTemplate(templateName, encoding);
			temp.process(data, out);
			out.flush();
			result = out.toString();
		}catch (Exception e) {
			throw e;
		}finally{
			out.close();
		}
		return result;
	}
	
	/**
	 * 日期运算函数
	 *
	 */
	public static class DateMethod implements TemplateMethodModelEx{
		@SuppressWarnings("rawtypes")
		public Object exec(List arguments) throws TemplateModelException {
			Date date = ((SimpleDate) arguments.get(0)).getAsDate();
	        String type = arguments.get(1).toString(); 
	        Integer num = ((SimpleNumber)arguments.get(2)).getAsNumber().intValue();
	        Calendar localCalendar = Calendar.getInstance();  
	        localCalendar.setTime(date);
	        if("d".equalsIgnoreCase(type)){
	        	int i = localCalendar.get(Calendar.DATE);  
	        	localCalendar.set(Calendar.DATE, i + num);
	        }else if("m".equalsIgnoreCase(type)){
	        	int i = localCalendar.get(Calendar.MONTH);  
	        	localCalendar.set(Calendar.MONTH, i + num);
	        }else if("y".equalsIgnoreCase(type)){
	        	int i = localCalendar.get(Calendar.YEAR);  
	        	localCalendar.set(Calendar.YEAR, i + num);
	        }
			return localCalendar.getTime();
		}
	}	
	
}

 

分享到:
评论

相关推荐

    freemarker模板引擎

    Freemarker是一个强大的、开源的模板引擎,主要应用于Java平台,用于生成动态内容。它的工作原理是将设计人员创建的HTML或XML模板与由程序员提供的数据模型相结合,生成最终的HTML或其他格式的输出。这对于Web开发中...

    使用freemarker模版引擎自动生成java项目源代码.zip

    FreeMarker是一个强大的、基于模板的Java模板引擎,广泛用于生成动态内容,如HTML、XML或其他任何文本格式。本项目以"使用FreeMarker模版引擎自动生成Java项目源代码"为主题,旨在展示如何利用FreeMarker自动化生成...

    FreeMarker模版

    FreeMarker作为一个模板引擎,允许用户在模板中嵌入指令代码,这些代码在模板被处理时执行,并生成最终的文本文件。 在FreeMarker模板中,特定的变量和指令被大括号${}包围。例如,若模板中有${obj.newsTitle}这样...

    Java利用Freemarker模板自动生成dto、dao、rowmapper、bo、service代码

    本主题涉及的核心技术是使用Freemarker模板引擎来生成DTO(Data Transfer Object)、DAO(Data Access Object)、RowMapper、BO(Business Object)和服务层代码。这些组件在Spring框架中扮演着重要角色。 1. **...

    freemarker模板

    Freemarker模板是一种强大的、基于Java的开源模板引擎,用于生成动态内容。它主要用于Web应用程序,尤其是与Spring框架集成时,但也可用于任何需要将数据模型转化为文本输出的场景,如电子邮件生成、报告制作等。在...

    freemarker根据word模板生成word的完整示例

    Freemarker是一个强大的Java模板引擎,它主要用于生成动态内容,比如HTML、XML或者Word文档。在Web开发中,Freemarker常被用作MVC模式中的视图层,与Spring等框架结合,帮助开发者根据数据模型自动生成页面。在这个...

    freemarker模板使用

    Freemarker是一个强大的开源模板引擎,常用于Java应用中生成动态HTML、XML或其他格式的文本。它允许开发者将逻辑和表现分离,使得前端设计人员可以专注于页面布局,而程序员则处理业务逻辑。在这个"freemarker模板...

    Java模板引擎 FreeMarker

    FreeMarker是一个强大的、开源的Java模板引擎,常用于Web应用中的动态内容生成,尤其是在MVC架构中,作为视图层的技术。它与JSP、JSTL等技术不同,FreeMarker是模型和视图完全分离的,使得开发者可以专注于业务逻辑...

    初试FreeMarker模板的一些问题

    FreeMarker是一个强大的、开源的模板引擎,主要用于生成动态HTML、XML或其他任何文本格式的文档。在Java环境中,它被广泛应用于Web开发,特别是在MVC(Model-View-Controller)架构中,作为视图层的技术。这篇名为...

    生成静态页面 freemarker模板

    在这个场景下,我们主要关注的是使用Freemarker作为模板引擎,结合Struts2框架来实现这一功能。 **Freemarker模板引擎** Freemarker是一个强大的、开源的模板语言,常用于Java应用中的视图层。它的主要任务是将...

    基于Java的模板引擎 FreeMarker.zip

    FreeMarker是一个强大的、开源的Java模板引擎,常用于Web应用中的动态内容生成,尤其是在MVC(Model-View-Controller)架构中,它作为View层的实现。FreeMarker与Spring、Struts等框架集成良好,允许开发者将业务...

    SSH项目 有Freemarker模版

    在这个项目中,"SSH项目 有Freemarker模版" 意味着它采用了Struts2作为MVC框架,Spring作为依赖注入容器和服务层管理,Hibernate作为对象关系映射工具,同时利用了Freemarker作为模板引擎来渲染前端视图。...

    freemarker-2.3.30模板word导出.zip

    Freemarker是一个强大的模板引擎,常用于生成动态HTML、XML或其他文本格式的文件,尤其在Java Web开发中广泛应用。此“freemarker-2.3.30模板word导出.zip”压缩包提供了使用Freemarker 2.3.30版本将数据导出为Word...

    freemarker java模板技术 很详细的注释

    Freemarker是一款强大的Java模板引擎,它被广泛用于Web开发中,用来生成动态HTML或者其他格式的文本。这个压缩包中的内容很可能包含了一系列关于Freemarker的详细注释,旨在帮助初学者理解其工作原理和使用方法。让...

    SpringBoot+JPA+Freemarker 生成动态SQL

    Freemarker是一个模板引擎,常用于生成HTML、XML或其他文本格式的文档。它与Java紧密集成,允许开发者在模板中使用Java表达式,动态生成内容。在Web开发中,Freemarker通常用于视图层,接收后台传递的数据并生成动态...

    基于java的模板引擎 FreeMarker.zip

    FreeMarker是一个强大的、开源的Java模板引擎,常用于Web应用中的动态内容生成,尤其是在MVC(Model-View-Controller)架构中,它作为View层的一部分,将数据模型和HTML或其他类型的文档模板结合,生成最终的网页。...

    利用freemarker根据数据库字段自动生成form表单代码

    本话题将详细探讨如何利用Freemarker模板引擎根据数据库字段自动生成form表单、DAO层和Service层的增删改查功能。 **1. Freemarker简介** Freemarker是一个开源的Java模板引擎,它允许开发者使用特定的模板语言...

    当前流行的模板引擎效率分析(velocity,freeMarker,Smarty4j,httl)

    本篇文章将对四个流行的Java模板引擎——Velocity、FreeMarker、Smarty4j以及HTTL进行效率分析,旨在探讨它们在处理业务逻辑编译和性能方面的优劣。 1. Velocity: Velocity是Apache软件基金会的一个开源项目,以其...

    基于Freemarker模板的代码生成器后台代码(controller,service,dao)模板文件

    Freemarker是一个强大的模板引擎,常用于Web应用中的动态页面生成。在Java世界里,它被广泛应用在代码生成器中,以实现自动生成常见的后台代码,如控制层、业务层和持久层。这个压缩包提供的就是一套基于Freemarker...

Global site tag (gtag.js) - Google Analytics