AEM-如何将数据传递到组件

AEM-如何将数据传递到组件,aem,aem-6,Aem,Aem 6,通常AEM组件从JCR节点检索其数据,但我想知道是否可以在HTL中向其传递数据。当然,有数据资源,但据我所知,这种方式只能传递JCR节点 所以在一个实际案例中,我在一个从别处检索的模型中得到了数据。但是我想使用现有的组件。我知道数据必须至少与组件类型的模型匹配 但是,如果我想使用的组件使用的是一个模型,该模型的数据注入方式如下 @Inject @Optional String[] itemList; 所以在我固执的想法中,应该可以通过某种方式传递一个字符串数组,比如 <div data-

通常AEM组件从JCR节点检索其数据,但我想知道是否可以在HTL中向其传递数据。当然,有
数据资源
,但据我所知,这种方式只能传递JCR节点

所以在一个实际案例中,我在一个从别处检索的模型中得到了数据。但是我想使用现有的组件。我知道数据必须至少与组件类型的模型匹配

但是,如果我想使用的组件使用的是一个模型,该模型的数据注入方式如下

@Inject
@Optional
String[] itemList;
所以在我固执的想法中,应该可以通过某种方式传递一个字符串数组,比如

<div data-sly-resource="${myModel.aStringArray @ resourceType='my/component' }"></div>

但就像上面提到的,这似乎只是为了传递节点


是否有任何方法可以直接向组件传递数据(而不是创建模板)?

您可以以请求属性或选择器的形式传递附加信息

选择器 选择器是传递简单信息最直接的方法。这是一个可以传递的字符串数组。这对于可以用作标志的数据非常有用,例如:

  • 组件的变体/模式
  • 如果组件包含在循环中,则列表中组件的索引
  • 构建诸如手风琴、制表符等内容时的父级ID
这种方法是对选择器的滥用,但我认为只要你知道自己在做什么,这就不应该是一个主要问题

<article data-sly-resource="${'path/to/resource' @ selectors=['s1', 's2']}"></article>

请求属性 此选项允许您向组件请求添加自定义请求属性。这可用于在包含对象时将对象作为参数传递给组件

这些是标准的http请求属性,用于将它们限定到脚本/资源包含的特定实例。要使用它,您最终将需要一个模型类或使用js,因为几乎不支持组合要传递的数据

<sly data-sly-use.settings="com.adobe.examples.htl.core.hashmap.Settings" 
        data-sly-include="${ 'productdetails.html' @ requestAttributes=settings.settings}" />


您可以以请求属性或选择器的形式传递附加信息

选择器 选择器是传递简单信息最直接的方法。这是一个可以传递的字符串数组。这对于可以用作标志的数据非常有用,例如:

  • 组件的变体/模式
  • 如果组件包含在循环中,则列表中组件的索引
  • 构建诸如手风琴、制表符等内容时的父级ID
这种方法是对选择器的滥用,但我认为只要你知道自己在做什么,这就不应该是一个主要问题

<article data-sly-resource="${'path/to/resource' @ selectors=['s1', 's2']}"></article>

请求属性 此选项允许您向组件请求添加自定义请求属性。这可用于在包含对象时将对象作为参数传递给组件

这些是标准的http请求属性,用于将它们限定到脚本/资源包含的特定实例。要使用它,您最终将需要一个模型类或使用js,因为几乎不支持组合要传递的数据

<sly data-sly-use.settings="com.adobe.examples.htl.core.hashmap.Settings" 
        data-sly-include="${ 'productdetails.html' @ requestAttributes=settings.settings}" />


还有另一种方法。您可以在初始化时使用data use将其他参数传递给Sling模型。例如:


还有另一种方法。您可以在初始化时使用data use将其他参数传递给Sling模型。例如:


您可以扩展SlingModel以从任何地方(请求、资源、远程服务)获取数据,也可以添加另一个包含在HTL文件中的模型。我不确定我是否在这里看到了问题..?您可以扩展SlingModel以从任何地方(请求、资源、远程服务)获取数据,也可以添加另一个包含在HTL文件中的模型。我不确定是否在这里看到了问题。@Shararh Madappa如何访问接收包含HTML(即productdetails.HTML)中的requestAttributes数据?@Shararh Madappa如何访问接收包含HTML(即productdetails.HTML)中的requestAttributes数据?