2013-07-06 4 views
3

Есть ли специальный инструмент в Thymeleaf для создания URL-адресов путем добавления/удаления/замены параметров? Например, мне нужно сделать запрос на ту же страницу, но добавив в запрос один дополнительный параметр «p = 1». Так что:Thymeleaf URL-адрес строительства

'/foo?a=b' becomes '/foo?a=b&p=1' // addition 
'/foo?p=0' becomes '/foo?p=1'  // replacing 

@{} не кажется, чтобы быть полезным здесь. Я бы предположил, что существует следующее: @{#currentUri(*, p=1, !q)}, где '*' для всех существующих параметров, 'p = 1' означает add/replace и '!' означает исключение.

Есть ли у Thymeleaf что-нибудь подобное или какой-либо другой синтаксис для гибкой структуры URL?

ответ

0

Похоже, Thymeleaf не предоставляет такой утилиты.

Но, поскольку он использует Spring EL, довольно легко написать вспомогательный класс с набором методов утилиты и сделать его доступным для выражений, чтобы вызвать эти методы. Синтаксически он может выглядеть очень близко к воображаемому примеру из вопроса: @{#currentUri("*", "p=1", "!q")}

0

Я знаю его некоторое время назад, когда вы задавали этот вопрос во всяком случае.

кажется, что ваш ищут httpServeltRequest.requestURI

<a th:href="@{${'~' + #httpServletRequest.requestURI}(lang=${language})}" th:text="#{${'Language.' + lang}}"><span>Switch to English</span></a> 

И с #httpServletRequest.QueryString вы можете получить все параметры, заданные в текущем URL. К сожалению, я не уверен, если вы можете исключить любые параметры.

Источник: http://forum.thymeleaf.org/How-to-link-to-current-page-and-exchange-parameter-td4024870.html

+0

'queryString' это просто строка, и было бы сложно восстановить URL с изменениями, как выражение в 1 линии. Для этого потребуется заблокировать строку запроса на ключи и значения, а затем восстановить параметр URL по параметру. – wajda

 Смежные вопросы

  • Нет связанных вопросов^_^