2016-02-18 10 views
5

Ich möchte Sie Javascript in eine Thymeleaf Vorlage hinzufügen Google Karte, wie folgt aus:Thymeleaf Fehler machen, wenn sie in Script-Tag mit Ampersand

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

Es wirft die Ausnahme:

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

Ich habe versucht, zu ändern & zu & aber nichts hat sich geändert.

Ihre Hilfe wird sehr geschätzt. Vielen Dank!

+2

Da die Thymeleaf-Vorlage XML ist, sollten Sie '' & 'anstelle von' & 'in Attributwerten verwenden. –

+0

Sie müssen & & encodieren. Weil & eine Escape-Sequenz von & ist und das XML es als ein Literal finden würde. – ShihabSoft

Antwort

0

Es war ein Fehler in Thymeleaf, aber es wurde seit 2.1.4 behoben.

Schauen Sie sich diese issue. (Das Problem beschrieben in this question).

+0

Danke für deine Antwort, @sanluck! Eigentlich benutze ich 2.1.4 Version, aber Problem existiert immer noch für mich .. –

+0

Können Sie den Code der URL-Erstellung posten? – sanluck

+0

Gefällt mir:

2

Thymeleaf verwendet XML-Parser und das Zeichen & wird als Sonderzeichen in XML betrachtet. Sie müssen ersetzen & mit seiner XML equvilant & .Ihre URL sein:

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

In thymeleaf 3, es wird kein Problem sein, da sie einen neuen Parser für thymeleaf schrieb.

+0

Hallo @Aboodz, ich habe das versucht, aber es tut nicht Arbeit für mich ... Danke für Ihre Antwort –

+0

@Aboodz, in diesem Fall Frühling kehrt 400 zurück. Erforderlicher Parameter 'someParam' ist nicht vorhanden. – Erlan

0

Sie haben einige Optionen:

1) Setzen Sie die th:src nicht verwenden.

2) Da die absolute URL ist, kann man es serverseitige Verwendung einer statischen Methode hinzufügen:

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

3) eine rewrite filter Gebrauch.

Nicht sicher, ob das Problem in Thymeleaf 3 behoben ist, aber es könnte sich lohnen, schnell zu aktualisieren und einen Blick darauf zu werfen.