如何在Sightly/HTL中连接字符串?

11

我有以下代码:

<sly data-sly-use.link="${'core.impl.view.tools.LinkUtils' @ path=properties.targetURL}"></sly>

我想要将properties.linkTypeproperties.targetURL连接起来。

有什么方法可以实现吗?我在网上找到了一些示例,但它们似乎不适用于我的情况。

2个回答

21

这取决于您要使用哪种字符串连接:

  1. 使用运算符拼接字符串是不支持的,即您不能执行${properties.targetURL + properties.linkType}。一种解决方法(由@Jens建议)是执行以下操作:<sly data-sly-test.concatenated="${'{0}{1}' @ format=[properties.targetURL, properties.linkType]}"></sly>
  2. 在HTML输出中拼接字符串可以通过将HTL表达式相邻而置实现,即${properties.targetUrl}${properties.linkType}
  3. 将两个字符串发送到Use对象是支持多个表达式选项的:<sly data-sly-use.link="${'core.impl.view.tools.LinkUtils' @ path=properties.targetURL, type=properties.linkType}"></sly>
  4. 在某些情况下,可能可以使用URI操作来拼接字符串以形成URL。

5
另外还有一种选项,虽然不是很有用但为了完整起见:${'{0}{1}' @ format=[properties.string1, properties.string2]}。请参阅 https://github.com/Adobe-Marketing-Cloud/htl-spec/blob/master/SPECIFICATION.md#examples。 - Jens
@Jens,这非常有创意,尤其是与data-sly-test结合使用。 - Vlad
我在考虑使用data-sly-test的变通方法,但我不确定是否可以在data-sly-test中使用format。如果可以的话,您可以创建一个新的连接字符串,然后将其用于操作所需使用的语句中。 - Jens

14

我只想在上面的答案中添加一种使用@join连接字符串的方法。

<sly data-sly-test="${['String1','String2','String3'] @ join = '-'}"/>

它将输出:

String1-String2-String3

你能把你所写的完整语法发给我吗? - Manisha Bano
看起来是我的错误,我使用了错误的上下文,这就是为什么这个 join = ' 不起作用,所以我撤回我写的东西,一切都没问题。 - Tomasz Szymulewski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接