2015-12-18 2 views
3

Я должен использовать службу строп, которую я создал, например.Как использовать услугу стропы на визитной странице без использования javascript?

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

Теперь я хочу назвать эту услугу в моем красивом, без использования JavaScript, поскольку есть шансы некоторых пользователи обыкновения использовать JavaScript, а доступ к моей службе. Как я могу назвать эту услугу?

ответ

2

Вы можете использовать API для использования. Для этого требуется предоставить класс компонента поиска, реализующий интерфейс WCMUse.

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

public class Search extends WCMUse { 

    @Reference 
    private SearchService searchService 

    public SearchResults listResults(){ 
    ... 

Компонент поиска использует свой сервис, чтобы получить реальные результаты и обеспечивает DataModel в красивый шаблон.

<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 для получения более подробной информации

+0

В вашем примере 'Search' это на самом деле не компонент, поэтому' @ Reference' аннотацию не будет работать. –

2

@Reference не работает в поле зрения. Здесь вы должны использовать вспомогательный класс скриптового скрипта.

Посмотрите на ниже фрагменте кода:

public class Search extends WCMUse { 

    SearchService service 

    @Override 
    public void activate() throws Exception { 
     service = getSlingScriptHelper().getService(SearchService.class); 
    } 
1

Поскольку вы упомянули слинг, а не AEM, вы можете сразу получить ссылку на службу с data-sly-use. Посмотрите на https://issues.apache.org/jira/browse/SLING-4554.

Это будет доступно в AEM 6.2.

0

В AEM 6.2 вы можете добиться этого путем простого ввода Услуги коды HTL:

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