有没有办法将 Java 类和 Alloy-UI 标签库导入 Liferay 6.2 动态数据列表 (DDL) Freemarker/Velocity 显示模板?
例如,在编辑动态数据列表 portlet (DDL) 的显示模板时,有没有办法导入WorkflowConstants.java之类的类并使用它?
还有什么方法可以使用 Display 模板为合金 UI 标签添加依赖项?
谢谢!
有没有办法将 Java 类和 Alloy-UI 标签库导入 Liferay 6.2 动态数据列表 (DDL) Freemarker/Velocity 显示模板?
例如,在编辑动态数据列表 portlet (DDL) 的显示模板时,有没有办法导入WorkflowConstants.java之类的类并使用它?
还有什么方法可以使用 Display 模板为合金 UI 标签添加依赖项?
谢谢!
您可以从 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());
}
}
加州.java
公共课 Cal {
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,velocity,用taglib太差了
https://www.liferay.com/it/web/mika.koivisto/blog/-/blogs/using-freemarker-in-your-theme-templates 也看看freemaker指南