如何直观地从使用对象设置变量?

How to set variable from use object in sightly?

我有简单的使用 class,其中包含一个 returns 具有大量 setters/getters 的复杂 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>

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

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

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

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

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

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

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

${data.firstProperty}
  <div>
    ${data.secondProperty}
  </div>

所以答案是:

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

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

您还可以在DOM个元素中设置

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