在前面,我从velocity action中获取文本,并尝试将其放入js变量中:
<script>
const text = {
#foreach($resource in ${messages.getResourcesWithPrefix('path.to.keys')})
'$!{resource.getKey()}': '$!{resource.getValue().replace("'", "")}',
#end
}
</script>
当加载velocity模板并且文本在更多行中(用回车符分隔)时,就会出现问题,例如:
console.log(text)
//const text = {
//'key1': 'value in one line'
//'key2': 'value in first line❌
//value in second line.'
...
js error抛出:
Uncaught SyntaxError: Invalid or unexpected token (at doc.do)
有没有可能用JavaScript在前面避免这个错误,或者用Java在后面避免这个错误?
顺便说一句,如果它是直接加载在速度模板的html,如:
#foreach($resource in ${messages.getResourcesWithPrefix('path.to.keys')})
<div>'$!{resource.getKey()}': '$!{resource.getValue().replace("'", "")}'</div>
#end
一切正常。
1条答案
按热度按时间83qze16e1#
你的问题的根源与Velocity无关,而是Json字符串不能是多行的。
您需要将回车替换为文字'\n'字符串,如下所示: