我正在尝试创建一个 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>
但是,它不会在每个数组项周围创建引号。对于速度模板来说相当陌生,但正在尝试解决这个问题。
最佳答案
这个怎么样?
$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 数组非常相似的表示形式。这似乎也有点脆弱。
关于java - 速度模板 - 数组不添加引号 - 尝试创建 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45315527/