我正在尝试创建一个JSON数组:
#set ($arrayCarousel = [])
#foreach ($image in $product.images)
#set ($index = $index + 1)
$arrayCarousel.add("
<div class='carousel__slide u-center'>
<img id='${index}' data-code='${product.code}' class='main_image' src='${image}' data-count='$!{product.viewCount}' />
</div>"
)
#end
<script id="prog-img-${product.code}" type="text/cycle">
${arrayCarousel}
</script>
但是,它不会在每个数组项周围创建引号。对速度模板很新,但试图解决这个问题。
答案 0 :(得分:0)
这个怎么样?
$arrayCarousel.add("${esc.q}
<div class='carousel__slide u-center'>
<img id='${index}' data-code='${product.code}' class='main_image' src='${image}' data-count='$!{product.viewCount}' />
</div>${esc.q}"
)
其中esc
是对Velocity Tool EscapeTool的引用。
您正在做的是将字符串添加到Java列表中。该字符串像往常一样用双引号分隔。如果您希望该值包含双引号,则需要添加它们,转义。
然而,该代码非常脆弱。如果product.code
或image
包含双引号,则会破坏您的JSON。
另外,请注意,您依赖的ArrayList.toString()
表示与有效的JavaScript数组非常相似。这似乎也有点脆弱。