FreeMarker - 获取当前 URL
Posted
技术标签:
【中文标题】FreeMarker - 获取当前 URL【英文标题】:FreeMarker - Get Current URL 【发布时间】:2011-03-13 13:18:16 【问题描述】:是否可以在FTL中获取当前页面的URL?
【问题讨论】:
【参考方案1】:据我所知,freemarker 严格来说是一个模板引擎——它只是生成文本,并且无法知道该文本将出现在哪里。如果您想包含“当前页面的 URL”,则必须将该数据从主机 Java 代码(推荐)传递到模板中,或者您必须使用 javascript 在客户端检测它。
【讨论】:
【参考方案2】:作为补充:如果您使用的是 FreemarkerServlet,则会将名为“Request”的哈希传递给每个模板,根据文档 here,每个模板都应该有一个键 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】:我正在运行 Spring 3.2.x,exposeSpringMacroHelpers 默认为 true。
根据Spring Documentation
设置是否暴露一个RequestContext供Spring的宏使用 库,名称为“springMacroRequestContext”。默认为 “真”。
在我看来,我可以这样做
<#if springMacroRequestContext.requestUri?contains("/login")>
希望对你有帮助。
【讨论】:
如果您使用的是 spring 4,您可以使用 FreeMarkerAutoConfiguration 进行配置 requestUri :这是 URI,而不是 URL(由 OP 询问)【参考方案5】:只需使用这一行:
<#assign url = http.request.url />
$url
【讨论】:
【参考方案6】:[#assign currentSiteName = sitefn.site().name]
$currentSiteName$state.currentURI
currentSiteName
将给出主页 url,state.currentURI
将给出后面的部分,因此您可以将其形成为:
baseURL + $currentSiteName$state.currentURI
【讨论】:
以上是关于FreeMarker - 获取当前 URL的主要内容,如果未能解决你的问题,请参考以下文章