2015-04-29 20 views
6

Potrzebuję obraz załadowany na znacznik html img za pomocą thymeleaf. Problem polega na tym, że sam obraz jest uzyskiwany z adresu URL, który przyjmuje dwa parametry.Uciekający znak "&" w thymeleaf

Próbka:

<img src="/products/images?categoryId=1&image=1" /> 

Kłopot jest parametr image są generowane dynamicznie i stąd trzeba użyć tam wyrażenie thymeleaf. Dlatego próbowałem coś takiego:

<img th:src="@{'/products/images?categoryId=1&image=' + ${product.id}}" /> 

Ale gdy uruchamiam to, pojawia się następujący komunikat:

Exception parsing document: template="product-list", line 104 - column 59 

co wskazuje na miejsce, w którym występuje „&” symbol. Teraz próbowałem używać "& amp; ale wtedy adres URL staje się czymś takim, jak adres URL, staje się czymś takim, jak adres URL, który staje się czymś w rodzaju podobnym do tego, co się dzieje. Oczywiście, to nie zadziała. Nie można tego zmienić.

Jak jeszcze utworzyć poprawny link z dwoma parametrami za pomocą thymeleaf?

Odpowiedz

6

Można to łatwo zrobić przez Thymeleaf. Nie łącz konkrementów i po prostu użyj @{'/products/images'(categoryId=1, image= ${product.id})}

Zobacz documentation.

+0

Wow! Dzięki! Chyba nie wiedziałem, czego szukać. Po prostu szukałem sposobów na pokazanie symbolu "&"! – shyam

+0

Co za czysty i pomocny fragment kodu! dzięki –

3

Sposób na ucieczkę od znaku ampersand & w dowolnym atrybucie html to &amp;. Właściwie zawsze powinieneś unikać znaków ampersand we wszystkich atrybutach html, niezależnie od tego, czy używasz Thymeleaf, czy nie.

Zobacz to pytanie o więcej szczegółów i odniesień: Do I encode ampersands in <a href...>?