FreeMarker - Получить текущий URL

Возможно ли получить текущий URL страницы в FTL?

Ответ 1

Насколько я могу судить, freemarker - это строго шаблонный движок - он просто создает текст и не знает, где будет выглядеть этот текст. Если вы хотите включить "URL текущей страницы", вам придется либо передать эти данные в шаблон из кода Java хоста (рекомендуется), либо вам придется обнаруживать его на стороне клиента, используя javascript.

Ответ 2

Я запускаю Spring 3.2.x и exposeSpringMacroHelpers по умолчанию имеет значение true.

По Spring Документация

Установите, следует ли выставлять RequestContext для использования макросом Springбиблиотеки под названием "springMacroRequestContext". По умолчанию "Истинный".

По моему мнению, я могу сделать что-то вроде

<#if springMacroRequestContext.requestUri?contains("/login")>

Ответ 3

Как дополнение: если вы используете FreemarkerServlet, хеш с именем "Request" передается каждому шаблону, который должен иметь один ключевой запросURL в соответствии с документацией .

Ответ 4

Да, это возможно. Убедитесь, что вы добавили "exposeSpringMacroHelpers" для своего распознавателя в контексте вашего приложения.

<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    <property name="exposeSpringMacroHelpers" value="true" />
    <property name="prefix" value="/view/" />
    <property name="suffix" value=".ftl" />
</bean>

Затем вызовите ${springMacroRequestContext.getRequestUri()} в вашем шаблоне

<span>This page url is: ${springMacroRequestContext.getRequestUri()}</span>

Ответ 5

Просто используйте эту строку:

<#assign url = http.request.url />
${url}