- 简述:项目发版时需要添加版本号码,以往都是已发版日期,每次发版前都需要更改,感觉麻烦
- 问题:因为版本每次不同即可,可使用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