如何在不使用javascript的情况下在sightly页面中使用sling服务?

时间:2015-12-18 06:42:50

标签: java sling sightly

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

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

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

5 个答案:

答案 0 :(得分:2)

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

NMSEs =

    1.0000

Error using bsxfun
Non-singleton dimensions of the two input arrays must match each other.

Error in gsubtract>calc_general (line 40)
    c = bsxfun(@minus,a,b);

Error in gsubtract>calc_cell (line 60)
  for i=1:numel(a), c{i} = calc_general(a{i},b); end

Error in gsubtract (line 24)
  c = calc_cell(a,b);

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

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

public class Search extends WCMUse {

   @Reference
   private SearchService searchService

   public SearchResults listResults(){ 
   ...

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

答案 1 :(得分:2)

BEGIN DECLARE rs1 CURSOR WITH RETURN TO CLIENT FOR select * from db2inst1.test2; update test2 set a=a+1 where a>ids; OPEN rs1; END 不能正常工作。你必须在这里使用sling脚本助手类。

请看下面的代码:

@Reference

答案 2 :(得分:1)

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

这将在AEM 6.2中提供。

答案 3 :(得分:1)

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



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

答案 4 :(得分:0)

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

以下链接足以以更好的方式解释它。

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