如何从使用对象中设置变量?

时间:2015-12-29 15:01:25

标签: aem sightly

我有一个普通的use class,它包含一个返回带有很多setter / getter的复杂bean的方法。让我们将其命名为SomeUse。给出正确的文件:

<sly data-sly-use.someUse="com.mycompany.SomeUse">
  ${someUse.data.firstProperty}
  <div>
    ${someUse.data.secondProperty}
  </div>
  <!-- ...and so on -->
</sly>

所以关键是我不想看someUse.data得到。而不是它,做这样的事情:

<sly data-sly-use.someUse="com.mycompany.SomeUse" data-sly-use.data=${someUse.data}>
  ${data.firstProperty}
  <div>
    ${data.secondProperty}
  </div>
  <!-- ...and so on -->
</sly>

我不能这样做。有没有其他方法可以达到这样的效果?非常感谢!

4 个答案:

答案 0 :(得分:2)

所以答案是:

<sly data-sly-test.varName="${data.firstProperty}"></sly>
<div> ${varName.secondProperty} </div>

通过空data-sly-test属性创建变量,使其可以在标记之后访问。

答案 1 :(得分:1)

您可以使用以下语法设置要在WCMUse类中使用的变量:

<sly data-sly-use.someUse="${ 'com.mycompany.SomeUse' @ page=currentPage }">

并从您的WCMUse类的page方法中检索activate()变量,如下所示:

Page page = get("page", Page.class);

有关工作示例,请查看this Sightly scriptthis WCMUse class

答案 2 :(得分:1)

而不是data-sly-use.data=${someUse.data} 使用data-sly-test.data="${someUse.data}"。 然后你就可以得到像

这样的房产
${data.firstProperty}
  <div>
    ${data.secondProperty}
  </div>

答案 3 :(得分:0)

您还可以在DOM元素中设置

<div id="elementId" data-sly-test.vehicle="${model.vehicle}">
    <p>${vehicle.name}</p>
     <p>${vehicle.type}</p>
</div>