mrjayviper
mrjayviper

Reputation: 2388

How to concatenate strings in Sightly/HTL?

I have the following code:

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

I want to concatenate properties.linkType to properties.targetURL.

Any ideas how it can be done? I've found examples on the net but they don't seem to work for my situation.

Upvotes: 11

Views: 17143

Answers (2)

Manisha  Bano
Manisha Bano

Reputation: 1903

I just want to add one more way to concatenate strings to the above answer, by using @ join.

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

It will give output as: String1-String2-String3

Upvotes: 14

Vlad
Vlad

Reputation: 10780

That depends on what kind of string concatenation you have in mind:

  1. Concatenating strings using an operator is not supported, ie. you cannot do ${properties.targetURL + properties.linkType}. A workaround (suggested by @Jens) is to do something like: <sly data-sly-test.concatenated="${'{0}{1}' @ format=[properties.targetURL, properties.linkType]}"></sly>
  2. Concatenating strings in HTML output can be done by placing HTL expression next to each other, ie. ${properties.targetUrl}${properties.linkType}
  3. Sending both strings to an Use Object is supported via multiple expression options: <sly data-sly-use.link="${'core.impl.view.tools.LinkUtils' @ path=properties.targetURL, type=properties.linkType}"></sly>
  4. Concatenating strings to form an URL might be possible in some cases using URI Manipulation

Upvotes: 22

Related Questions