【问题标题】:FreeMarker - Get Current URLFreeMarker - 获取当前 URL
【发布时间】:2011-03-13 13:18:16
【问题描述】:

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

【问题讨论】:

    标签: freemarker


    【解决方案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”。默认为 “真”。

          在我看来,我可以这样做

          &lt;#if springMacroRequestContext.requestUri?contains("/login")&gt;

          希望对你有帮助。

          【讨论】:

          • 如果您使用的是 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}
            

            【讨论】:

              猜你喜欢
              • 2014-01-03
              • 2023-03-12
              • 1970-01-01
              • 1970-01-01
              • 2017-10-22
              • 2012-12-31
              • 2012-07-05
              • 2012-11-12
              • 2010-10-30
              相关资源
              最近更新 更多