freemarker テンプレートから静的フィールド、静的メソッド、および非静的メソッドにアクセスできます。サンプルプログラムはこちら。
カスタム定数クラスですが、Life ray に WorkflowConstants があり、同じものにアクセスできます
public class WorkflowConstants {
public static int ACTION_SAVE_DRAFT = 1;
public static String CONTEXT_COMPANY_ID = "MTRX_78";
// static method
public static String test() {
return "executed Constant#test()";
}
}
//FooCallMethod クラス
public class FooCallMethod {
public static void main(String[] args) throws Exception {
Configuration config = new Configuration();
config.setClassForTemplateLoading(FooCallMethod.class, "");
config.setObjectWrapper(new DefaultObjectWrapper());
config.setObjectWrapper(ObjectWrapper.BEANS_WRAPPER);
Map<String, Object> dataModel = new HashMap<String, Object>();
TemplateHashModel staticModels = BeansWrapper.getDefaultInstance().getStaticModels();
dataModel.put("statics", staticModels);
TemplateHashModel fileStatics = (TemplateHashModel) staticModels
.get("java.io.File");
Cal cal = new Cal();
dataModel.put("cal", cal);
dataModel.put("File", fileStatics);
Template template = config.getTemplate("/foo.ftl");
StringWriter out = new StringWriter();
template.process(dataModel, out);
System.out.println(out.getBuffer().toString());
}
}
Cal.java
パブリッククラスカル{
public int add(int a, int b) {
return a + b;
}
public int mul(int a, int b) {
return a * b;
}
}
テンプレート
${statics["com.tset.WorkflowConstants"].test()}
${statics["com.tset.WorkflowConstants"].ACTION_SAVE_DRAFT}
${statics["com.tset.WorkflowConstants"].CONTEXT_COMPANY_ID}
2+3 = ${cal.add(2,3)}
10/2 = ${cal.mul(10,2)}
${statics["java.lang.System"].currentTimeMillis()}
ノート:
Dynamic Data Lists
freeMarker テンプレートで
簡単に使用できます。こちらを参照してください。速度で言及されていますが、freeMarker 構文を使用する必要があります。
freemaker 言語を使用してください: taglib、速度のより強力で完全なサポート、taglib を使用するには貧弱すぎます
https://www.liferay.com/it/web/mika.koivisto/blog/-/blogs/using-freemarker-in-your-theme-templates
freemaker ガイドもご覧ください