3

私が作成したスリングサービスを使用する必要があります。

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

一部のユーザーが私のサービスにアクセスしているときにjavascriptを使用しない可能性があるため、javascriptを使用せずにこのサービスをサイトで呼び出したいと思います。このサービスを呼び出すにはどうすればよいですか?

4

5 に答える 5

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 に答える
2

AEM ではなく Sling について言及したので、. でサービスへの参照を直接取得できますdata-sly-usehttps://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 に答える