如何在sightly中使用java类

时间:2018-01-11 08:01:33

标签: java aem sightly

我在本地组件中创建了一个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中呈现

2 个答案:

答案 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