Including literal JSON content in Velocity (avoiding HTML escapes)
题
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 = ["bar", "baz"]
</script>
How can this be avoided?
解决方案
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.
其他提示
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.
不隶属于 StackOverflow