java - 速度模板 - 数组不添加引号 - 尝试创建 JSON 数组

标签 java velocity

我正在尝试创建一个 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.codeimage 包含双引号,它将破坏您的 JSON。

另外,请注意,您所依赖的 ArrayList.toString() 具有与有效 JavaScript 数组非常相似的表示形式。这似乎也有点脆弱。

关于java - 速度模板 - 数组不添加引号 - 尝试创建 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45315527/

相关文章:

amazon-web-services - 如何在 AWS API Gateway 响应模板中使用 Velocity 变量?

javascript - 我是否错误地将 Ajax 请求映射到我的 Controller 类?

java - 速度空值和空字符串

liferay - 如何获取 Liferay 速度模板中的页面标题

java - 如何使用 ClasspathResourceLoader #include 来自 Velocity 模板的文件

java - 如何在 Spring 3 中使用 Velocity Tools 获取 VelocityEngine

java - Mongodb 对象是否绑定(bind)到单个 Mongod 实例?

java - 使用递归将其元素加起来为 n 的子集列表

java - Mapstruct - 从多个集合映射到单个集合

java - 是否可以添加另一个字段来查找和过滤 java 中 mongodb 数据库的结果?