2016-02-18 5 views
5

をアンパサンドを使用して、私はGoogleがこのように、ThymeleafのテンプレートにJavaScriptをマップに追加したいときThymeleafがエラーをレンダリング:スクリプトタグで

https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places 

それが例外をスローします。

org.xml.sax.SAXParseException; lineNumber: 209; columnNumber: 93; The reference to entity "key" must end with the ';' delimiter 

私は変更しようとしました&&でも変更はありません。

お手数をおかけします。ありがとう!

+2

ThymeleafテンプレートはXMLであるため、属性値に '&'の代わりに '&'を使用する必要があります。 –

+0

&に&をエンコードする必要があります。&は&のエスケープシーケンスであり、XMLはそれをリテラルとして検索します。 – ShihabSoft

答えて

0

これはThymeleafのバグでしたが、2.1.4以降で修正されました。

これを見てくださいissue。 (this questionに記載されている不具合)。

+0

あなたの答えをありがとう@sanluck! 実際に私は2.1.4のバージョンを使用していますが、まだ問題があります。 –

+0

URL作成のコードを投稿できますか? – sanluck

+0

このように:

2

ThymeleafはXMLパーサーを使用しており、&という文字はXMLでは特殊文字と見なされます。

https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places 

thymeleaf 3では、彼らはthymeleafのための新しいパーサを書いているので、それが問題になることはありません:あなたはなりますそのXMLのequvilant & .Your URLで&を交換する必要があります。

+0

こんにちは@Aboodz、私はそれを試しましたが、それはありません私のために働いてください...あなたの答えのために –

+0

@Aboodz、この場合、Springは400を返す。必須パラメータ 'someParam'は存在しません。 – Erlan

0

あなたは、いくつかのオプションがあります。

1)はまったくth:srcを使用しないでください。 URLは絶対的であるので

2)、あなたは静的メソッドを使用して、それをサーバー側を追加することができます。

<script th:src="${@urlService.getMapsUrl()}">...</script> 

3)rewrite filterを使用してください。

問題がThymeleaf 3で修正されているかどうかは不明ですが、すぐにアップグレードして見てみる価値があります。

関連する問題