3

我必须使用我创建的吊索服务,例如

@Component
@Service
public class SearchServiceImpl implements SearchService {
    public SearchResults search() {
     SearchResults results = new SearchResults();
     .....
     return results;
    }
}

现在我想在不使用 javascript 的情况下直接调用此服务,因为有些用户在访问我的服务时可能不会使用 javascript。我如何称呼这项服务?

4

5 回答 5

2

由于您提到了 Sling,而不是 AEM,因此您可以直接使用data-sly-use. 看看https://issues.apache.org/jira/browse/SLING-4554

这将在 AEM 6.2 中提供。

于 2016-02-08T23:00:30.603 回答
2

@Reference不工作。您必须在此处使用 sling 脚本帮助程序类。

看下面的片段:

public class Search extends WCMUse {

    SearchService service

    @Override
    public void activate() throws Exception {
        service = getSlingScriptHelper().getService( SearchService.class );
    }
于 2016-02-04T01:47:28.710 回答
2

你可以去使用API​​。这需要提供一个实现 WCMUse 接口的搜索组件类。

...
import com.adobe.cq.sightly.WCMUse;

public class Search extends WCMUse {

   @Reference
   private SearchService searchService

   public SearchResults listResults(){ 
   ...

搜索组件使用您的服务来获取实际结果并将数据模型提供给视觉模板。

<div data-sly-use.search="Search">
    <ul data-sly-list.result="${search.listResults}">
      <li>${result.title}</li>
    </ul>
</div>

官方文档对实现我们的目标很有帮助。 https://docs.adobe.com/docs/en/aem/6-1/develop/sightly/use-api-in-java.html了解详情

于 2015-12-23T09:08:35.020 回答
2

在 AEM 6.2 中,您只需将服务放入 HTL 代码即可实现此目的:

<p data-sly-use.search="com.your.package.SearchServiceImpl">
   ${search.results}
</p>

于 2016-10-28T00:03:38.143 回答
0

最佳答案是按照 AEM 6.2 在 WCMUSEPOJO 类中使用 getSlingScriptHelper().getService()

下面的链接足以更好地解释它。

http://adobeaemclub.com/access-osgi-ser%C2%ADvice-from-the-wcmuse-class-in-sightly/

于 2017-07-07T04:45:18.080 回答