Velocity与FreeMarker

2024-03-09 00:58
文章标签 freemarker velocity

本文主要是介绍Velocity与FreeMarker,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

相比较FreeMarker而言,Velocity更加简单、轻量级,但它的功能却没有FreeMarker那么强大。依据评测的结论, freemarker 稍快一些。差别在毫秒级别,对用户而言可以忽略不计,若超大流量,考虑负载时,较倾向后者。   
velocity 出现得较早些,也有更多的受众,因此在考虑到人员配给上,略占优势。但是模板技术上手都很快的,所以无所谓。   
对于大部分的应用来说,使用 FreeMarker 比 Velocity 更简单,因为 Velocity 还必须编写一些自定义的toolbox类以及一遍遍重复的编写一些比较通用的模版代码,因此也就丧失了刚开始开发时更多的宝贵时间。另外使用工具类和变通的方法在模版引擎中似乎不是一个非常有效的做法。同时,Velocity 的做法使得在Velocity的模版中大量的跟 Java 对象进行交互,这违反了简单的原则,尽管你也可以将代码转入控制器中实现。当然,如果你像使用 Velocity 一样来使用 FreeMarker ,那么 FreeMarker 也可以跟 Velocity 一样简单。   
Velocity 一个优于FreeMarker的地方在于它有很广泛的第三方支持以及一个非常庞大的用户社区,你可以通过这个社区获得到很多的帮助,相反的FreeMarker在这方面要差很多。当然,也有越来越多的第三方软件开始在支持 FreeMarker 。   
下面是一些 FreeMarker 能做到的,而 Velocity 做不到的功能列表(且看着):   

日期和数字的支持 

您可以执行运算和比较,对任意数量的类型,包括任意精度类型,而不仅仅是整数。您可以比较和显示(格式化)日期/时间值。   

国际化 

您可以格式数字区域,各种各样的内置和自定义数字格式模式。您可以格式日期地区和时区,各种各样的内置和定制的日期格式模式。标识符(变量名)可以包含非英语字母一样重音字母,阿拉伯字母,汉字等   

循环处理 

您可以退出循环您可以访问控制变量外循环机构的内部循环您可以得知当前是否到了循环的结束位置   

模版级别的数组处理 

您可以使用 的语法来访问数组元素,包括原始的和非原始的指数可以获取到数组的长度   

宏定义 

宏调用可以通过位置或名称进行参数传递宏的参数可以设定默认值,在调用宏时如果没有指定该参数,则使用默认值代替通过 body 可以支持宏的嵌套可以通过文本表达的“宏的名称”来直接调用某个宏宏允许先使用再定义宏可以定义局部变量(新版本的Velocity也通过#local指令来实现该功能,尽管官方的文档还没有进行介绍)   

命名空间 

您可以使用多个名称空间的变数。当您建立“宏库”时是非常有用的 ,因为可以防止名称冲突与申请特定变量或与其他宏变量的库。   

内置与 Java 语言无关的字符串、列表、Map 的操作方法 


能提示模版中的拼写错误以及其他错误 

当访问一个不存在的变量时,FreeMarker 在执行该模版时会报错,通过配置,你可以指定 FreeMarker 在碰到此类错误时是停止执行,还是忽略该错误,同时 FreeMarker 会在日志中记录此问题;如果您输入错误指令的名称,FreeMarker将抛出一个异常。   

更高级的文本输出工具 

   

文本处理 

支持Java的特殊字符处理,例如\b, \t, \n, \f, \r, \", \', \\,以及UNICODE的\xXXXX 除了通常的字符串,数字,和布尔常量您可以定义列表和地图文字以及内部模板   

高级的空格清除 

FreeMarker 将删除一些多余的空格、跳格、换行等字符,从而消除一些令人厌烦的明显多余的空格 FreeMarker 也提供指令来删除多于的空格   

与其他技术的集成 

提供JSP 标签库以便在 JSP 中嵌入 FreeMarker 模版可以直接跟 Python 对象一起工作   

更强大的XML转换功能 


先进的模板元程序 

您可以捕捉到输出的任意部分范本背景变量您可以任意解释的范围变量,就好像它是一个模板定义   

这篇关于Velocity与FreeMarker的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/789031

相关文章

MyEclipse安装FreeMarker插件

MyEclipce8.5中安装FreeMarker插件,这绝对是最简单的方法。步骤如下: (一)打开 http://sourceforge.net/projects/freemarker-ide/files/ 下载最新版本,目前本人下载时最新版本是:freemarker-ide-0.9.14 (二)将其解压,将hudson.freemarker_ide_0.9.14文件夹放入MyEcl

freemarker对空值的判断

${(entity.property.id)!0} 加上()说明对 entity、 entity.property、 entity.property.id都进行是否为null的判断;如果不是用(),则只判断 entity.property.id是否为null,这样很多时候在数据异常的时候会报错。 在下面这种写法中是使用 exists来判断时候为null <#if lis

Spring整合FreeMarker本地化动态设置

Spring整合FreeMarker进行国际化的过程很简单,将spring-webmvc里的org/springframework/web/servlet/view/freemarker下的spring.ftl include到各个要国际化的ftl文件里就行了,比如将这个spring.ftl复制在ftl文件目录的common下,可以这样直接在ftl里include进来 <#import "

FreeMarker整合Spring mvc

FreeMarker整合Spring 3 开发环境: System:Windows WebBrowser:IE6+、Firefox3+ JavaEE Server:tomcat5.0.2.8、tomcat6 IDE:eclipse、MyEclipse 8 开发依赖库: JavaEE5、Spring 3.0.0.M4、FreeMarker 2.3.16 Email:hoojo_@126.com

freemarker 模板生成 文件

最近公司比较忙,好久没写文章了,今天来一篇。 要生成的目标java文件   package com.cs.qdog.swift.objects; public class F32B { private Double amount; private String currency; public Double getAmount() { return amount; } publ

Spring MVC 多视图协商配置(json、xml、freemarker)

Spring mvc可以配置多种视图,比如json、xml、ftl等等(REST内容协商)。 RESTful服务中很重要的一个特性是对于同一资源,可以有多种表述形式。 既然是协商视图,那么Spring MVC REST改如何决定采用何种方式(视图)展示内容呢? 第一种:根据http request header中的Accept Accept: text/css,*/

FreeMarker页面中获得contextPath

使用的环境为Spring MVC+FreeMarker,要在ftl页面中使用contextPath,需要在viewResolver中做如下配置(红色部分): <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <property name

freemarker 整理手册

注释:包含在<#--和--> <#local y = "test"> 定义局部变量 <#import "/lib/my_test.ftl" as my> 导入模板文件 指定名字空间 my <#macro greet>     用户定义指令   <font size="+2">Hello Joe!</font> </#macro>  Ø         作为用户定

Freemarker 中文API手册

FreeMarker概述            FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写          FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序          虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板

使用Java进行FreeMarker的web模板开发的基础教程

转载自:http://www.jb51.net/article/80361.htm 一、概述 FreeMarker 是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯 Java 编写,FreeMarker 被设计用来生成 HTML Web 页面,特别是基于 MVC 模式的应用程序,虽然 FreeMarker 具有一些编程的能力,但通常由 Java 程序准备要显示的数据,由Fre