FreeMarker - 获取当前URL

时间:2010-07-08 19:57:03

标签: freemarker

是否可以在FTL中获取当前页面的URL?

6 个答案:

答案 0 :(得分:8)

据我所知,freemarker严格来说是一个模板引擎 - 它只是生成文本,无法知道文本的出现位置。如果要包含“当前页面的URL”,则必须将该数据从主机Java代码(推荐)传递到模板中,否则您将必须使用javascript在客户端检测它。

答案 1 :(得分:5)

我正在运行Spring 3.2.x并将exposeSpringMacroHelpers默认为true。

根据Spring Documentation

  

设置是否公开RequestContext供Spring的宏使用   库,名为“springMacroRequestContext”。默认是   “真”。

在我看来,我可以做类似

的事情

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

希望它有所帮助。

答案 2 :(得分:3)

作为补充:如果您使用的是FreemarkerServlet,根据文档here,将一个名为“Request”的哈希传递给每个应该有一个密钥requestURL的模板。

答案 3 :(得分:3)

是的,这是可能的。确保你添加&#34; exposeSpringMacroHelpers&#34;在应用程序上下文中查看解析器。

<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 :(得分:0)

只需使用此行:

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

答案 5 :(得分:-1)

cat myfile > /dev/udp/127.0.0.1/8080

[#assign currentSiteName = sitefn.site().name] ${currentSiteName}${state.currentURI} 将提供主页URL,而currentSiteName将提供后一部分,因此您可以将其形成为:

state.currentURI