有没有办法平行地迭代两个列表?

时间:2016-10-09 11:52:55

标签: aem sightly

在java

中考虑这段代码
for(int i=0,j=0;i<list1.size() && j<list2.size();i++,j++){

//do something

}

我们可以做些类似的事吗?我在我的关卡上尝试得最好,但我找不到办法。请帮忙。

2 个答案:

答案 0 :(得分:1)

不支持这种迭代,这是为了避免将业务逻辑放在HTL / Sightly模板中。您应该调用一个Use-Api对象,该对象应用此逻辑并从两个列表中返回一组元组。

答案 1 :(得分:0)

添加Vlad发布的答案,您可以使用

  • 吊带模型
  • WCMUse课程
  • 服务器端javascript执行此类业务逻辑

我认为最好将nodejs用于这样简单的问题,因为它更高效,易于编写,并且与sightly / HTL代码位于同一文件夹中。

例如,如果您的组件名称是&#39; componentA&#39; 您的HTL / sightly代码是componentA.html驻留在componentA文件夹中 并且您的业务逻辑可以是驻留在同一文件夹中的componentA.js。

(defun npair (s1 s2)
  (let ((result '()))
    (cond ((null s1) s2)
          ((null s2) s1)
          (t (loop for e1 in s1
                do (loop for e2 in s2
                      do (push (list e1 e2) result)))
             (nreverse result)))))

当您需要使用注入的属性和资源执行业务逻辑时,Sling模型非常有效。例如,具有多个基元和派生(来自资源)属性的组件。

相关问题