0

有没有办法将 Java 类和 Alloy-UI 标签库导入 Liferay 6.2 动态数据列表 (DDL) Freemarker/Velocity 显示模板?

例如,在编辑动态数据列表 portlet (DDL) 的显示模板时,有没有办法导入WorkflowConstants.java之类的类并使用它?

还有什么方法可以使用 Display 模板为合金 UI 标签添加依赖项?

谢谢!

4

1 回答 1

1

您可以从 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指南

于 2014-04-24T17:21:25.040 回答