I\'m trying to use Freemarker in conjunction with jQuery Templates.
Both frameworks use dollar sign/curly brackets to identify expressions for substitution (or as th
This should print ${person.name}:
${r"${person.name}"}
From the freemarker docs
A special kind of string literals is the raw string literals. In raw string literals, backslash and ${ have no special meaning, they are considered as plain characters. To indicate that a string literal is a raw string literal, you have to put an r directly before the opening quotation mark or apostrophe-quote
I had to spent some time to figure out the following scenarios to escape ${expression} -
<#assign var = r"${expression}">
<a href="/user/${r"${expression}"}"> Some link </a>
<#assign x = "something&"+r"${expression}"/>
If ${
is your only problem, then you could use the alternate syntax in the jQuery Templates plugin like this: {{= person.name}}
Maybe a little cleaner than escaping it.
Did you try $$
?
I found from the Freemarker manual that ${r"${person.name}"}
will print out ${person.name}
without attempting to render it.
Perhaps you should also take a look at Freemarker escaping freemarker
I can confirm that the
${r"${item.id}"}
is the correct way as an example.
So I kinda full example will look like
<span><a href="/user/user-remove/${r"${item.id}"}"> Remove </a></span>
and the output will be :
<span><a href="/user/user-remove/${item.id}"> Remove </a></span>
In the case when you want to use non-raw strings so that you can escape double quotes, apostrophes, etc, you can do the following:
Imagine that you want to use the string ${Hello}-"My friend's friend" inside of a string. You cannot do that with raw strings. What I have used that works is:
${"\x0024{Hello}-\"My friend's friend\""}
I have not escaped the apostrophe since I used double quotes.