是否可以在 FTL 中获取当前页面的 URL?
24312 次
6 回答
9
据我所知,freemarker 严格来说是一个模板引擎——它只是生成文本,并且无法知道该文本将出现在哪里。如果您想包含“当前页面的 URL”,则必须将该数据从主机 Java 代码(推荐)传递到模板中,或者您必须使用 javascript 在客户端检测它。
于 2010-07-08T20:10:38.060 回答
6
我正在运行 Spring 3.2.x,exposeSpringMacroHelpers 默认为 true。
设置是否公开一个 RequestContext 以供 Spring 的宏库使用,名称为“springMacroRequestContext”。默认为“真”。
在我看来,我可以做类似的事情
<#if springMacroRequestContext.requestUri?contains("/login")>
希望能帮助到你。
于 2015-02-27T15:22:15.410 回答
3
作为补充:如果您使用的是 FreemarkerServlet,则会将名为“Request”的哈希传递给每个模板,根据此处的文档,该模板应该有一个 key requestURL 。
于 2012-03-01T14:16:10.693 回答
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>
于 2014-07-17T18:35:42.203 回答
-1
只需使用这一行:
<#assign url = http.request.url />
${url}
于 2017-02-22T07:11:54.727 回答
-1
[#assign currentSiteName = sitefn.site().name]
${currentSiteName}${state.currentURI}
currentSiteName
将给出主页 urlstate.currentURI
并将给出后面的部分,因此您可以将其形成为:
baseURL + ${currentSiteName}${state.currentURI}
于 2020-12-10T08:46:24.910 回答