数据狡猾地调用,而不是调用

时间:2014-12-23 11:19:59

标签: cq5 aem sightly

我正在尝试[链接] http://docs.adobe.com/docs/en/aem/6-0/develop/sightly/use-api-in-java.html给出的示例示例。我创建了SightlyTest组件,其中对模板的数据狡猾调用不起作用。以下是组件内部的文件: 的 extra.html

<template data-sly-template.extra="${@ text}"
          data-sly-use.extraHelper="${'ExtraHelper' @ text=text}">
    <p>${extraHelper.reversedText}</p>
</template>

ExtraHelper.java

package apps.AEMProject.components.content.SightlyTest;
import com.adobe.cq.sightly.WCMUse;
public class ExtraHelper extends WCMUse {
    private String reversedText;
    public String getReversedText() {
        return reversedText;
    }
    @Override
    public void activate() throws Exception {
        String text = get("text", String.class);
        reversedText = new StringBuilder(text).reverse().toString();
        System.out.print("reversedText ::: "+reversedText);
    }
}

SightlyOp.java

package apps.AEMProject.components.content.SightlyTest;
import com.adobe.cq.sightly.WCMUse;
public class SightlyOp extends WCMUse {
    private String lowerCaseTitle;
    private String lowerCaseDescription;
    @Override
    public void activate() throws Exception {
        lowerCaseTitle = getProperties().get("title", "").toLowerCase();
        lowerCaseDescription = getProperties().get("description", "").toLowerCase();
    }

    public String getLowerCaseTitle() {
        return lowerCaseTitle;
    }

    public String getLowerCaseDescription() {
        return lowerCaseDescription;
    }

}

SightlyTest.html

<div data-sly-use.sg="SightlyOp"
     data-sly-use.extra="extra.html">

    <h1>${sg.lowerCaseTitle}</h1>
    <p>${sg.lowerCaseDescription}</p>
    <div data-sly-call="${extra @ text=properties.description}"></div>

</div>

sg.lowerCaseTitle&amp; sg.lowerCaseDescription工作正常,但没有显示数据狡猾调用 感谢

2 个答案:

答案 0 :(得分:1)

请在SightlyTest.html中尝试此操作,

<div data-sly-use.sg="SightlyOp" data-sly-use.extra1="extra.html">
    <h1>${sg.lowerCaseTitle}</h1>
    <p>${sg.lowerCaseDescription}</p>
    <div data-sly-call="${extra1.extra @ text=properties.description}"></div>
</div>

修改为data-sly-use.extra1以区分变量和被调用的模板。

答案 1 :(得分:0)

我意识到我来晚会的时间有点晚了,但我想扩展Aditya's answer

将文件 extra.html 更像是data-sly-templates的“库”,因为它可以包含任意数量的文件(每个都有不同的名称)。因此,当您“使用”extra.html文件时,您可以将这些模板导入到您在use语句中提供的命名空间中。然后,您可以使用该“命名空间”调用模板。

<div data-sly-use.sg="SightlyOp"
     data-sly-use.extra="extra.html">
     <!--/*${extra} is now a namespace for the templates in extra.html. (you can name it whatever you like for more clarity*/-->

    <h1>${sg.lowerCaseTitle}</h1>
    <p>${sg.lowerCaseDescription}</p>

    <!--/*since your template is called extra, and it's in the namespace called extra you call it with ${extra.extra}*/-->
    <div data-sly-call="${extra.extra @ text=properties.description}"></div>

</div>