Question

I'm trying to use the Velocity engine embedded in Atlassian's products (and exposed through com.atlassian.templaterenderer) to substitute a JSON value into a template.

In the template, this looks a bit like the following:

<script>
  foo = $foo
</script>

However, when I render the template with "foo" mapped to a string ["bar", "baz"], the output is the following:

<script>
  foo = [&quot;bar&quot;, &quot;baz&quot;]
</script>

How can this be avoided?

Was it helpful?

Solution

Atlassian has an event handler which performs escaping on any variable with a name not ending with WithHtml.

Thus:

<script>
foo = $fooWithHtml
</script>

expands as desired.

OTHER TIPS

This is not a default behavior, looks like you have EscapeHtmlReference event handler registered either in your velocity.properties or in java initialization. More details on event handlers here.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top