staticメソッドにアクセスする
FreemarkerでJavaクラスのstaticメソッドにアクセスする方法。
直接はできないっぽいが、freemarker.ext.beans.BeansWrapperを使うと比較的楽に実現可能。
ソース:
Configuration cfg = new Configuration(); cfg.setTemplateLoader(new ClassTemplateLoader(getClass(), "/")); Map<String, Object> root = new HashMap<String, Object>(); root.put("statics", BeansWrapper.getDefaultInstance().getStaticModels()); StringWriter writer = new StringWriter(); cfg.getTemplate("sample.ftl").process(root, writer); System.out.println(writer.toString());
sample.ftl:
Current time is ${statics["java.lang.System"].currentTimeMillis()?c}
結果:
Current time is 1256895102406
ちなみにテンプレート中の「?c」は数字をそのまま表示するための指定。