我正在尝试[链接] 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工作正常,但没有显示数据狡猾调用 感谢
答案 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>