java
  • velocity
  • 2017-07-26 33 views 1 likes 
    1

    我試圖創建一個JSON陣列: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> 
    

    但是,它不創建一個圍繞每個數組項報價。對速度模板來說很新,但試圖弄清楚這一點。

    回答

    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工具EscapeTool的參考。

    你在做什麼是將一個字符串添加到Java列表。該字符串像往常一樣用雙引號分隔。如果您希望該值也包含雙引號,則需要添加它們並轉義。

    但是,這段代碼難以置信的脆弱。如果product.codeimage包含雙引號,則會破壞您的JSON。

    此外,請注意,您所依靠的ArrayList.toString()的表示與有效的JavaScript數組非常相似。這似乎也有點脆弱。

    相關問題