2010-07-08 33 views

Respuesta

7

Por lo que puedo decir, freemarker es estrictamente un motor de plantillas: simplemente produce texto y no tiene forma de saber dónde aparecerá ese texto. Si desea incluir la "URL de la página actual", tendrá que pasar esos datos a la plantilla desde el código de Java del host (recomendado) o tendrá que detectarlo desde el lado del cliente utilizando javascript.

3

Solo como un suplemento: Si está utilizando FreemarkerServlet, se pasa un hash llamado 'Request' a cada plantilla que debe tener una solicitud requestL de acuerdo con la documentación here.

3

Sí, es posible. Asegúrese de agregar "exposeSpringMacroHelpers" para su resolución de vista en el contexto de su aplicación.

<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> 

luego llamar a $ {springMacroRequestContext.getRequestUri()} en su plantilla

<span>This page's url is: ${springMacroRequestContext.getRequestUri()}</span> 
4

estoy ejecutando 3.2.x primavera y exposeSpringMacroHelpers valor predeterminado es true.

Según Spring Documentation

definir si se exponga una RequestContext para el uso de macro la biblioteca de primavera, bajo el nombre de "springMacroRequestContext". El valor predeterminado es "verdadero".

En mi opinión, puedo luego hacer algo como

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

Espero que ayuda.

+0

si está usando muelle 4 se puede configurar utilizando FreeMarkerAutoConfiguration – Sergio1978

+0

RequestURI: es URI, no URL (preguntó por OP) – user1075613

0

Sólo tiene que utilizar esta línea:

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