2010-07-08 139 views

回答

7

據我所知,freemarker完全是一個模板引擎 - 它只是生成文本,並且無法知道文本將出現在哪裏。如果您想要包含「當前頁面的URL」,您必須將該數據從主機Java代碼傳遞到模板(推薦),否則您必須使用javascript檢測客戶端。

3

作爲補充:如果您使用的是FreemarkerServlet,則根據文檔here將名爲'Request'的散列傳遞給每個應具有一個密鑰requestURL的模板。

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

我跑泉3.2.x中和默認的exposeSpringMacroHelpers爲true。

Spring Documentation

設置是否通過Spring的宏 庫揭露使用的RequestContext的,名稱爲 「springMacroRequestContext」 下。默認爲 「true」。

在我看來,我就可以做這樣的事情

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

希望它能幫助。

+0

如果你使用Spring 4,你可以使用FreeMarkerAutoConfiguration – Sergio1978 2015-03-30 00:44:34

+0

requestUri配置:這是URI,而不是URL(由OP問) – user1075613 2016-02-29 18:29:43

0

只需使用這條線:

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