我在本地组件中创建了一个java类,我无法用参数调用java类。
的 socialfeeds.java
package com.zerosix.components.socialfeeds;
public class SocialFeeds {
public String displayMessage(String val) {
return "Welcome to AEM 6.2 : Your Message is" + val;
}
}
的 socialfeeds.html
<div data-sly-use.socialfeeds="SocialFeeds">
<h1>${socialfeeds.displayMessage('hello world')}</h1>
</div>
我也试过
<div data-sly-use.socialfeeds="SocialFeeds">
<h1>${socialfeeds.displayMessage @ 'hello world'}</h1>
</div>
两者都不起作用。
要求。
我的目的是从对话框创建服务参数并调用Instagram API来获取数据并在html中呈现
答案 0 :(得分:3)
您不能在HTL(sightly)表达式中调用带有参数的方法。
在HTL表达式中使用的任何方法都必须是无参数(最好是getter)方法。
这并不是说你不能将参数从声音传递到你的模型(无论是Use
还是sling model
提供者)。 您可以,以下是您的工作方式:
您只能通过HTL表达式选项将参数传递给模型
<sly data-sly-use.myModel="${'package.path.to.MyModel' @ param='param value'}"></sly>
可以找到HTL规范here
使用Use
API:
查看adobe doc here
以下是doc中的示例:
/content/my-example/component/info/info.html
<div data-sly-use.info="${'Info' @ text='Some text'}">
<h1>${info.lowerCaseTitle}</h1>
<p>${info.lowerCaseDescription}</p>
<p>${info.upperCaseText}</p>
</div>
/apps/my-example/component/info/Info.java
package apps.my_example.components.info;
import com.adobe.cq.sightly.WCMUse;
public class Info extends WCMUse {
...
private String reverseText;
@Override
public void activate() throws Exception {
...
String text = get("text", String.class);
reverseText = new StringBuffer(text).reverse().toString();
}
public String getReverseText() {
return reverseText;
}
...
}
使用Sling Models
:
查看吊索模型提供商文档here
以下是doc中的示例:
<div data-sly-use.model3="${'org.example.models.Model3' @ colour='red', path=resource.path}">
${model3.shine}
</div>
和模型:
@Model(adaptables=SlingHttpServletRequest.class)
public class Model3 {
@Inject
private String colour;
@Inject
private String path;
}
希望这有帮助!
答案 1 :(得分:-2)
你的java类应该扩展WCMUsePojo类,并且要知道如何使用这些类,你可以参考https://helpx.adobe.com/experience-manager/htl/using/use-api-java.html