`

Velocity自定义授命函数

阅读更多
  • 简述:项目发版时需要添加版本号码,以往都是已发版日期,每次发版前都需要更改,感觉麻烦
  • 问题:因为版本每次不同即可,可使用UUID代替
  • 实现:在Velocity中使用自定义授命函数
  • 过程:

UUID的概念,
参考:
http://www.cnblogs.com/jdonson/archive/2009/07/22/1528466.html
http://blog.csdn.net/carefree31441/archive/2009/03/17/3998553.aspx
UUID可以当做表中的主键

1.定义页面
<html><body>#version()</body></html>

2.定义velocity.properties,放在WEB-INF下
input.encoding = UTF-8
output.encoding =UTF-8
webapp.resource.loader.cache = true
webapp.resource.loader.modificationCheckInterval = 1
velocimacro.library.autoreload = false
velocimacro.library = /WEB-INF/VM_global_library.vm
velocimacro.permissions.allow.inline = true
velocimacro.permissions.allow.inline.to.replace.global = false
velocimacro.permissions.allow.inline.local.scope = false
velocimacro.context.localscope = false
##配置函数路径
userdirective=web.tags.VersionTag
##

3.定义函数
package web.tags;

import java.io.IOException;
import java.io.Writer;
import java.util.UUID;

import org.apache.velocity.context.InternalContextAdapter;
import org.apache.velocity.exception.MethodInvocationException;
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.apache.velocity.runtime.directive.Directive;
import org.apache.velocity.runtime.parser.node.Node;

public class VersionTag extends Directive{

	@Override
	public String getName() {
		return TagNameConstants.VERSION_TAG;//见4常量类,即在VM中使用的名称,version
	}
	@Override
	public int getType() {
		return LINE;//或BLOCK
	}
	@Override
	public boolean render(InternalContextAdapter context, Writer writer,
			Node node) throws IOException, ResourceNotFoundException,
			ParseErrorException, MethodInvocationException {
		writer.write(UUID.randomUUID().toString());//输出的内容
		return false;
	}
}

4.可添加常量类,便于管理
package web.tags;
public class TagNameConstants {
/** 显示版本号 使用#version */
public final static String VERSION_TAG = "version" ;
}


参考文献:http://www.educity.cn/wenda/379584.html
分享到:
评论

相关推荐

    Velocity自定义标签无法注入spring的Service解决办法

    用springMVC+velocity时,当使用自定义标签,发现自定义标签无法注入spring的其它服务类,归根源码发现,velocity的源码中有一段,有一段代码永远获取的是新实例。所以,把这个地方的源码改了,所以使用这个的时候,...

    用户自定义函数.pdf

    例如,如果要定义一个二维弯管中的抛物线入流速度条件,可以编写一个名为inlet_x_velocity的函数,使用DEFINE_PROFILE宏。这个宏允许用户指定域和变量,通过begin_f_loop宏循环处理线上的所有面,从而定义非线性的...

    velocity语法

    Velocity语法 1. 变量 (1) 变量的定义: #set($name = "hello") 说明:velocity中变量是弱类型的。 当使用#set 指令时,括在双引号中的字面字符串将解析和重新解释,如下所示: #set($directoryRoot = "www" ) #set...

    velocity的jar包

    4. **宏**:Velocity支持宏定义,宏类似于函数,可以在模板中重复使用,提高代码复用性。 5. **事件驱动的处理机制**:Velocity 提供了一套事件驱动的处理机制,允许用户自定义处理器对模板进行预处理或后处理,如...

    velocity-1.5.jar,velocity-1.6.2-dep.jar,velocity-tools-1.3.jar

    它支持JavaBean和Map对象的直接引用,并且通过Action接口可以方便地进行用户自定义操作。此外,Velocity 1.5还包含了一个简单的缓存机制,用于提升性能。 2. **velocity-1.6.2-dep.jar**: 这是Velocity的1.6.2...

    velocity入门使用教程

    在velocity.properties文件中,可以指定toolbox.xml文件,该文件用于定义工具箱,工具箱中可以包含自定义的Velocity工具(Macro)和函数(Function)。这些工具和函数可以在模板中直接调用,简化模板编写。 通过...

    Velocity--java的模板引擎

    例如,可以创建自定义的函数库,方便在模板中调用复杂的功能。同时,通过合理的缓存策略和配置,可以进一步提升Velocity的性能。 总之,Velocity作为Java的模板引擎,以其简单易用和高效稳定的特性,被广泛应用于...

    Velocity

    这些自定义指令可以是简单的函数,也可以是复杂的逻辑。此外,还可以通过 `VelocityTools` 注册工具类,将常用的 Java 类库方法暴露给模板使用,例如日期格式化、URL编码等。 **5. 与其他技术的集成** Velocity ...

    velocity-1.7.jar

    4. **可扩展性**:Velocity支持自定义指令和工具,可以轻松扩展其功能以满足特定需求。 5. **性能**:Velocity在执行速度上表现出色,因为它在编译时就生成了Java字节码,从而提高了运行效率。 **依赖关系:** 在...

    Velocity用户手册 中文版

    2. **可扩展性**:Velocity 支持自定义指令和函数,可以扩展其功能以满足特定需求。 3. **性能优化**:Velocity 使用编译模板的方式提高执行效率,生成的模板类在第一次运行时被编译成Java字节码。 4. **安全**:...

    velocity.min.js

    利用velocity来定义动画序列,可以直接使用velocity.js中预定义动画开发自己的网页动画,也可以利用velocity.js自定义动画

    Java进阶教程Velocity快速掌握模板引擎视频

    l 自定义tools工具类 l springmvc整合velocity l 实现对用户数据的简单增删改查 4. 适用人群 本课程的定位是velocity的系统教学课程 , 从基础到进阶 , 所以只要对velocity感兴趣 , 想系统学习velocity的开发人员都...

    velocity的学习资料

    - 自定义指令:可以通过扩展Velocity,编写自定义指令以满足特定需求。 7. **最佳实践** - 尽量避免在模板中进行复杂的逻辑处理,保持模板简洁。 - 合理使用`#set`指令,避免全局变量污染。 - 使用`#macro`定义...

    Velocity用户手册(中文)

    4. **可扩展性**: Velocity支持自定义指令和宏,可以轻松地扩展功能以满足特定需求。 5. **社区支持**: 作为Apache项目,Velocity有着丰富的文档和活跃的社区支持,遇到问题时可以得到及时的帮助。 **Velocity核心...

    velocity文档及其详细语法

    Velocity函数和方法调用 Velocity支持调用对象的方法,例如: ```vel 你的名字是:$user.getName() ``` 此外,Velocity还有一系列内置的工具类(如`#set`,`#if`,`#foreach`),以及可以自定义的Velocity工具...

    velocity中文文档 教程

    3. **宏**:自定义的可重用代码块,类似于函数,可以接受参数。 4. **注释**:`#comment` 和 `##` 用于在模板中添加注释。 **Velocity的使用** 1. **初始化Velocity上下文**:在Java代码中,你需要创建一个`...

    Mastering.Apache.Velocity

    3. **函数调用**:可以通过 `#functions` 或者自定义函数来扩展模板的功能。 4. **宏定义**:允许定义可重用的代码块。 #### 五、Velocity 的工作流程 1. **加载模板**:Velocity 引擎首先加载包含 VTL 的模板文件...

    velocity 1.5

    10. **扩展性**:Velocity 允许用户自定义工具类(Toolbox),将自定义的方法或工具暴露给模板使用,增强了其灵活性和可扩展性。 总的来说,Velocity 1.5 是一个强大且灵活的模板引擎,它简化了Web应用的开发流程,...

    Velocity 和 FreeMarker区别

    主要原因是FreeMarker内置了更多的功能,例如自动转义机制、丰富的内置函数等,这使得开发者无需额外编写工具类或方法即可完成许多常见的任务。而使用**Velocity**时,为了达到类似的效果,则可能需要开发者自己编写...

Global site tag (gtag.js) - Google Analytics