2010-07-08 45 views

Trả lời

7

Theo như tôi có thể nói, freemarker là một công cụ tạo khuôn mẫu - nó chỉ đơn giản là tạo văn bản và không có cách nào biết được văn bản đó sẽ xuất hiện ở đâu. Nếu bạn muốn bao gồm "URL của trang hiện tại", bạn sẽ phải chuyển dữ liệu đó vào mẫu từ mã Java máy chủ (được khuyến nghị) hoặc bạn sẽ phải phát hiện nó ở phía máy khách bằng cách sử dụng javascript.

3

Cũng giống như phần bổ sung: Nếu bạn đang sử dụng FreemarkerServlet, một băm có tên 'Yêu cầu' được chuyển đến mỗi mẫu cần có một requestURL chính theo tài liệu here.

3

Có, có thể. Hãy chắc chắn rằng bạn thêm "exposeSpringMacroHelpers" cho trình phân giải khung nhìn của bạn trong ngữ cảnh ứng dụng của bạ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> 

Sau đó gọi $ {springMacroRequestContext.getRequestUri()} trong mẫu của bạn

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

Tôi đang chạy mùa xuân 3.2.x và exposeSpringMacroHelpers giá trị mặc định là true.

Theo Spring Documentation

Đặt dù để lộ một RequestContext để sử dụng bởi thư viện vĩ mô Spring, dưới cái tên "springMacroRequestContext". Mặc định là "true".

Theo quan điểm của tôi, sau đó tôi có thể làm điều gì đó như

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

Hy vọng nó giúp.

+0

nếu bạn đang sử dụng lò xo 4 bạn có thể cấu hình sử dụng FreeMarkerAutoConfiguration – Sergio1978

+0

requestUri: đây là URI, không URL (hỏi bởi OP) – user1075613

0

Chỉ cần sử dụng dòng này:

<#assign url = http.request.url /> 
${url} 
Các vấn đề liên quan