- 简述:项目发版时需要添加版本号码,以往都是已发版日期,每次发版前都需要更改,感觉麻烦
- 问题:因为版本每次不同即可,可使用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
分享到:
相关推荐
用springMVC+velocity时,当使用自定义标签,发现自定义标签无法注入spring的其它服务类,归根源码发现,velocity的源码中有一段,有一段代码永远获取的是新实例。所以,把这个地方的源码改了,所以使用这个的时候,...
例如,如果要定义一个二维弯管中的抛物线入流速度条件,可以编写一个名为inlet_x_velocity的函数,使用DEFINE_PROFILE宏。这个宏允许用户指定域和变量,通过begin_f_loop宏循环处理线上的所有面,从而定义非线性的...
Velocity语法 1. 变量 (1) 变量的定义: #set($name = "hello") 说明:velocity中变量是弱类型的。 当使用#set 指令时,括在双引号中的字面字符串将解析和重新解释,如下所示: #set($directoryRoot = "www" ) #set...
4. **宏**:Velocity支持宏定义,宏类似于函数,可以在模板中重复使用,提高代码复用性。 5. **事件驱动的处理机制**:Velocity 提供了一套事件驱动的处理机制,允许用户自定义处理器对模板进行预处理或后处理,如...
它支持JavaBean和Map对象的直接引用,并且通过Action接口可以方便地进行用户自定义操作。此外,Velocity 1.5还包含了一个简单的缓存机制,用于提升性能。 2. **velocity-1.6.2-dep.jar**: 这是Velocity的1.6.2...
在velocity.properties文件中,可以指定toolbox.xml文件,该文件用于定义工具箱,工具箱中可以包含自定义的Velocity工具(Macro)和函数(Function)。这些工具和函数可以在模板中直接调用,简化模板编写。 通过...
例如,可以创建自定义的函数库,方便在模板中调用复杂的功能。同时,通过合理的缓存策略和配置,可以进一步提升Velocity的性能。 总之,Velocity作为Java的模板引擎,以其简单易用和高效稳定的特性,被广泛应用于...
这些自定义指令可以是简单的函数,也可以是复杂的逻辑。此外,还可以通过 `VelocityTools` 注册工具类,将常用的 Java 类库方法暴露给模板使用,例如日期格式化、URL编码等。 **5. 与其他技术的集成** Velocity ...
4. **可扩展性**:Velocity支持自定义指令和工具,可以轻松扩展其功能以满足特定需求。 5. **性能**:Velocity在执行速度上表现出色,因为它在编译时就生成了Java字节码,从而提高了运行效率。 **依赖关系:** 在...
2. **可扩展性**:Velocity 支持自定义指令和函数,可以扩展其功能以满足特定需求。 3. **性能优化**:Velocity 使用编译模板的方式提高执行效率,生成的模板类在第一次运行时被编译成Java字节码。 4. **安全**:...
利用velocity来定义动画序列,可以直接使用velocity.js中预定义动画开发自己的网页动画,也可以利用velocity.js自定义动画
l 自定义tools工具类 l springmvc整合velocity l 实现对用户数据的简单增删改查 4. 适用人群 本课程的定位是velocity的系统教学课程 , 从基础到进阶 , 所以只要对velocity感兴趣 , 想系统学习velocity的开发人员都...
- 自定义指令:可以通过扩展Velocity,编写自定义指令以满足特定需求。 7. **最佳实践** - 尽量避免在模板中进行复杂的逻辑处理,保持模板简洁。 - 合理使用`#set`指令,避免全局变量污染。 - 使用`#macro`定义...
4. **可扩展性**: Velocity支持自定义指令和宏,可以轻松地扩展功能以满足特定需求。 5. **社区支持**: 作为Apache项目,Velocity有着丰富的文档和活跃的社区支持,遇到问题时可以得到及时的帮助。 **Velocity核心...
Velocity函数和方法调用 Velocity支持调用对象的方法,例如: ```vel 你的名字是:$user.getName() ``` 此外,Velocity还有一系列内置的工具类(如`#set`,`#if`,`#foreach`),以及可以自定义的Velocity工具...
3. **宏**:自定义的可重用代码块,类似于函数,可以接受参数。 4. **注释**:`#comment` 和 `##` 用于在模板中添加注释。 **Velocity的使用** 1. **初始化Velocity上下文**:在Java代码中,你需要创建一个`...
3. **函数调用**:可以通过 `#functions` 或者自定义函数来扩展模板的功能。 4. **宏定义**:允许定义可重用的代码块。 #### 五、Velocity 的工作流程 1. **加载模板**:Velocity 引擎首先加载包含 VTL 的模板文件...
10. **扩展性**:Velocity 允许用户自定义工具类(Toolbox),将自定义的方法或工具暴露给模板使用,增强了其灵活性和可扩展性。 总的来说,Velocity 1.5 是一个强大且灵活的模板引擎,它简化了Web应用的开发流程,...
主要原因是FreeMarker内置了更多的功能,例如自动转义机制、丰富的内置函数等,这使得开发者无需额外编写工具类或方法即可完成许多常见的任务。而使用**Velocity**时,为了达到类似的效果,则可能需要开发者自己编写...