0

Java クラスと Alloy-UI タグ ライブラリを Liferay 6.2 Dynamic Data List (DDL) Freemarker/Velocity Display Template にインポートする方法はありますか?

たとえば、Dynamic Data List ポートレット (DDL) の表示テンプレートを編集する場合、WorkflowConstants.javaなどのクラスをインポートして使用する方法はありますか?

また、表示テンプレートで Alloy-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());

}

}

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 ListsfreeMarker テンプレートで 簡単に使用できます。こちらを参照してください。速度で言及されていますが、freeMarker 構文を使用する必要があります。

freemaker 言語を使用してください: taglib、速度のより強力で完全なサポート、taglib を使用するには貧弱すぎます

https://www.liferay.com/it/web/mika.koivisto/blog/-/blogs/using-freemarker-in-your-theme-templates freemaker ガイドもご覧ください

于 2014-04-24T17:21:25.040 に答える