如何在不使用 javascript 的情况下在 sightly 页面中使用 sling 服务?
How do I use a sling service in sightly page without using javascript?
我必须使用我创建的吊索服务,例如
@Component
@Service
public class SearchServiceImpl implements SearchService {
public SearchResults search() {
SearchResults results = new SearchResults();
.....
return results;
}
}
现在我想在不使用 javascript 的情况下直接调用此服务,因为有些用户在访问我的服务时可能不会使用 javascript。如何调用此服务?
你可以去使用API。这需要提供一个实现 WCMUse 接口的搜索组件 class。
...
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 详情
@Reference
无法正常工作。您必须在此处使用 sling 脚本助手 class。
请看下面的代码片段:
public class Search extends WCMUse {
SearchService service
@Override
public void activate() throws Exception {
service = getSlingScriptHelper().getService( SearchService.class );
}
由于您提到的是 Sling,而不是 AEM,因此您可以使用 data-sly-use
直接获取对服务的引用。看看 https://issues.apache.org/jira/browse/SLING-4554.
这将在 AEM 6.2 中提供。
在 AEM 6.2 中,您只需将服务放入 HTL 代码即可实现此目的:
<p data-sly-use.search="com.your.package.SearchServiceImpl">
${search.results}
</p>
最佳答案是按照 AEM 6.2
在 WCMUSEPOJO class 中使用 getSlingScriptHelper().getService()
以下link足以更好地解释它。
http://adobeaemclub.com/access-osgi-ser%C2%ADvice-from-the-wcmuse-class-in-sightly/
我必须使用我创建的吊索服务,例如
@Component
@Service
public class SearchServiceImpl implements SearchService {
public SearchResults search() {
SearchResults results = new SearchResults();
.....
return results;
}
}
现在我想在不使用 javascript 的情况下直接调用此服务,因为有些用户在访问我的服务时可能不会使用 javascript。如何调用此服务?
你可以去使用API。这需要提供一个实现 WCMUse 接口的搜索组件 class。
...
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 详情
@Reference
无法正常工作。您必须在此处使用 sling 脚本助手 class。
请看下面的代码片段:
public class Search extends WCMUse {
SearchService service
@Override
public void activate() throws Exception {
service = getSlingScriptHelper().getService( SearchService.class );
}
由于您提到的是 Sling,而不是 AEM,因此您可以使用 data-sly-use
直接获取对服务的引用。看看 https://issues.apache.org/jira/browse/SLING-4554.
这将在 AEM 6.2 中提供。
在 AEM 6.2 中,您只需将服务放入 HTL 代码即可实现此目的:
<p data-sly-use.search="com.your.package.SearchServiceImpl">
${search.results}
</p>
最佳答案是按照 AEM 6.2
在 WCMUSEPOJO class 中使用 getSlingScriptHelper().getService()以下link足以更好地解释它。
http://adobeaemclub.com/access-osgi-ser%C2%ADvice-from-the-wcmuse-class-in-sightly/