是否可以在FTL中获取当前页面的URL?
答案 0 :(得分:8)
据我所知,freemarker严格来说是一个模板引擎 - 它只是生成文本,无法知道文本的出现位置。如果要包含“当前页面的URL”,则必须将该数据从主机Java代码(推荐)传递到模板中,否则您将必须使用javascript在客户端检测它。
答案 1 :(得分:5)
我正在运行Spring 3.2.x并将exposeSpringMacroHelpers默认为true。
设置是否公开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