2010-07-08 6 views

ответ

7

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

3

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

3

Да, это возможно. Убедитесь, что вы добавили «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's url is: ${springMacroRequestContext.getRequestUri()}</span> 
4

Я бегу Spring 3.2.x и exposeSpringMacroHelpers по умолчанию истина.

По Spring Documentation

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

На моем взгляде, я могу после этого сделать что-то вроде

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

Надеется, что это помогает.

+0

если вы используете пружинный 4 можно настроить с помощью FreeMarkerAutoConfiguration – Sergio1978

+0

requestUri: это URI, а не URL (заданный OP) – user1075613

0

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

<#assign url = http.request.url /> 
${url} 
Смежные вопросы