使用freemarker的web项目经常需要用在Url后面加上时间戳来保证资源不被缓存,我们可以自定义方法实现时间戳。
先看freemarker配置信息:
0 zh_CN UTF-8
下面看UrlTimestampMethodModel是如何实现的:
//必须实现freemarker.template.TemplateDirectiveModel @Componentpublic class UrlTimestampMethodModel implements TemplateDirectiveModel { @Override public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body) throws TemplateException, IOException { // 当前时间毫秒数 + 四位随机 String strTimestamp = ""; try { strTimestamp = String.valueOf(System.currentTimeMillis()) + getRandom(1000, 9999); } catch (Exception ex) { } env.getOut().write(strTimestamp); } private int getRandom(int min, int max) { Random random = new Random(); return Integer.parseInt(String.valueOf(random.nextInt(max) % (max - min + 1) + min)); }}
在模板页面中这样使用: