首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache Sling和scriptlet

Apache Sling和scriptlet
EN

Stack Overflow用户
提问于 2013-04-03 00:31:10
回答 5查看 927关注 0票数 3

我是Apache Sling的新手,我在所有示例中都看到它使用JSP scriptlet来呈现页面。

我是认真的?有没有一种方法可以使用普通的java代码,而不是一种被认为过时的技术,10多年前,由于存在的所有缺点,Sun自己就不鼓励这种技术?

或者可能有一个模糊的原因,即使用scriptlet是实现的最佳选择,但我不知道这一点。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-04-03 02:04:05

如果你不喜欢scriptlet,你也可以使用taglib和EL。有关快速概述,请参阅Sling SVN存储库中的the latest version of the TLD file。当然,您可以使用Javascript、Groovy、Ruby或Sling支持的任何其他脚本语言。

至于标记库,引用SLING-2648: Add Resource Access Tags的话,您可以使用它们来执行以下操作

代码语言:javascript
复制
<c:set var="currentResource" value="${sling:getResource(resourceResolver,'/etc')}" />
<c:forEach var="child" items="${sling:listChildResources(currentResource)}">
    <c:if test="${child.name != 'jcr:content'}">
        <sling:getResource var="pageContent" path="${child.path}/jcr:content" />
        <sling:adapt adaptable="${pageContent}" adaptTo="org.apache.sling.api.resource.ValueMap" var="childProperties" />
        <sling:getProperty key="jcr:title" defaultValue="${child.name}" var="title" properties="${childProperties}" />
        <li><a href="${child.path}.html">Title: ${title}</a></li>
    </c:if>
</c:forEach> 
票数 3
EN

Stack Overflow用户

发布于 2013-04-03 14:56:27

Sling在如何处理请求和呈现页面方面留下了很大的自由度。您可以通过OSGi服务和请求处理servlets、仅使用各种语言和模板系统的服务器端脚本、使用Sling的默认JSON呈现的完整客户端呈现或这些技术的任意组合来使用Java代码。

可能会有许多“次优”的例子,但您可以选择适合您需求的请求处理和呈现方法。

票数 1
EN

Stack Overflow用户

发布于 2017-01-18 02:53:23

优秀的Sling开发人员不再使用JSP。它只是在文档和示例中,因为它是很长时间以来的标准。

您可以正确地将JSP视为一种犯罪(或反模式),它包含两件事:

  • presentation
  • business逻辑

这些文件需要分离到不同的文件中。

用于Presentation的

使用"Sightly“,现在称为”HTL“。请阅读以下内容:

Sightly是一个现代的服务器端表示框架,它正确地将业务逻辑与表示声明分离,就像您熟悉的任何其他框架一样,比如Handlebar或FreeMarker,甚至facelets。

诚然,它不是在Sling框架之外使用的语法,因此它不是可重用的知识,但您真的可以在大约一个小时内完全掌握它,而且它优雅而圆滑。

您可以使用任何其他表示逻辑,包括

  • handlebars
  • Groovy Groovy

但是--所有这些都不会“开箱即用”。您必须找到合适的“脚本引擎”并自己安装它们,或者自己编写一个脚本来在Sling中启用这些引擎。例如,广受欢迎的Adobe AEM产品Sling附带了一个现成的handlebars scriptengine。如果您愿意做这项工作,您可以使用太阳下的所有表示框架。

业务逻辑

如果您使用Sightly (也称为HTL)进行表示,您将使用" use“api来声明哪个脚本或类为该表示准备您的业务逻辑。在这里,你实际上只有两个“开箱即用”的选择:

服务器Side!)

  • Java

(注意:

  • JavaScript

目标是让这些语言中的一种提供“支持bean”类型的业务逻辑,该业务逻辑为您获取数据并准备好由您的演示呈现。为了让您直观的演示文稿声明它使用的是哪个"bean“或脚本,您可以在这里使用"use API”:

https://docs.adobe.com/docs/en/htl/docs/use-api.html

示例:

代码语言:javascript
复制
<div data-sly-use.bean="myscript.js">${bean.valueFromJavascript}</div>

现在,您可以使用更多的语言,但是您必须编写一些自定义代码,以允许Sling通过use API使用这些替代语言。例如,我现在正试图弄清楚如何通过Use API公开groovy或Kotlin,这样我就可以这样做:

代码语言:javascript
复制
<div data-sly-use.bean="myscript.groovy">${bean.valueFromGroovy}</div>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15769381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档