2016-12-09 18 views
0

我有以下問題,需要將freemarker列表的值複製到javascript數組中。如何在freemarker列表中將複雜元素(包含特殊字符)解析爲javascript數組

目前,我有以下幾點:

var items = [[#list cart.lineItems as item]${item?js_string}[/#list]]; 

導致某事像下面:

[LineItemImpl[productId=3e14a4f7-7f35-4010-8346-76b51eec9cb4,variant=ProductVariantImpl[productId=3e14a4f7-7235-4110-8326-76b51eec9cb4,id=1,sku=anySKU,prices=[PriceImpl[currentValue=<null>,value=EUR 19.99000,country=DE,customerGroup=<null>,channel=<null>,discounted=<null>,validFrom=<null>,validUntil=<null>,id=f43967f7-2h73-43ac-a0c0-ea506b9fe66e,custom=<null>]],label=Damen Sport Shirt Rückansicht Größe XS]],availability=ProductVariantAvailabilityImpl[isOnStock=true,restockableInDays=<null>,channels={},availableQuantity=10],isMatchingVariant=<null>,price=<null>,scopedPrice=<null>,scopedPriceDiscounted=<null>,key=<null>,assets=[],attributes=[AttributeImpl[name=color,value={\"key\":\"white\",\"label\":\"Weiß\"}], AttributeImpl[name=Material,value={\"label\":\"Polyester\",\"key\":\"polyester\"}], AttributeImpl[name=Fuer,value= 

這包含了(幾乎在結束)字符{},其中腳本停止與合作錯誤:

Invalid or unexpected token.

我認爲這是因爲提到的字符。 我會如何逃避那些角色。對於ftl的給定內置函數,這可能嗎?還是我需要更復雜的方法?

回答

1

看來,你不只是想插入一些字符串到JavaScript字符串的中間(這就是?js_string的用途)。你想將一堆Java對象轉換成JavaScript。假設這些對象只是基本的JavaBean和List -s/array-s,也許你可以用Jackson或其他庫來將Java對象編組爲JSON。 FreeMarker在這裏不相關;如果你有JSON,你只需插入它而不逃脫。

相關問題