2014-05-05 38 views
12

Tôi đang sử dụng Thymeleaf Template Engine với Spring Web MVC và tôi đã bị mắc kẹt trong khi tạo ra của url với sự giúp đỡ của url hiện tại. Có cách nào để có được hiện tại bên trong tập tin HTML Thymeleaf? ví dụ: Giả sử url hiện tại của tôi trong thanh địa chỉ trình duyệt của tôi là:Spring MVC: Làm thế nào để có được url hiện tại Thymeleaf

http://localhost:8080/project/web/category/mobiles

và bây giờ tôi muốn thực hiện một url như thế này http://localhost:8080/project/web/category/mobiles/store/samsung

hoặc

http://localhost:8080/project/web/category/mobiles?min_price=10&max_price=100.

Vì vậy, tôi mã sẽ trông như thế này

<a th:with="currentUrl='http://localhost:8080/project/web/category/mobiles'" 
    th:href="@{__${currentUrl}__/__${store.name}__}"> 
    Click to More Result 
</a> 

Ở đây tôi đang sử dụng currentUrl biến với url hardcoded, Vì vậy, tôi muốn một số giải pháp cho cùng. Giá trị hardcoded sẽ không hoạt động mọi lúc vì tôi có các danh mục động.

tôi đã cố gắng cùng với url tương đối nhưng nó không làm việc cho tôi.

<a th:href="@{/store/__${store.name}__}">Click to More</a> 

//will produce: http://localhost:8080/project/web/store/samsung 
//I want: http://localhost:8080/project/web/category/mobiles/store/samsung 

Vui lòng xem và cho tôi biết nếu tôi làm điều gì đó sai.

+1

Tại sao bạn cần URL đầy đủ? Tại sao không chỉ đơn giản là sử dụng URL tương đối? –

+0

Trong trường hợp của tôi 'http: // localhost: 8080/project' là url cơ sở của tôi và'/web/category/{categoryName} 'được ánh xạ bởi bộ điều khiển. Tôi đã cố gắng tương đối nhưng nó không có vẻ làm việc, tôi đang sử dụng này cho các url tương đối ' '. – user2518430

Trả lời

29

Oh tôi có những giải pháp cho việc này. Tôi đã bỏ lỡ số {#httpServletRequest.requestURI} trong tài liệu.

Dưới đây là giải pháp mà đang làm việc cho tôi:

<a th:href="@{__${#httpServletRequest.requestURI}__/store/__${store.name}__}">Click to More</a> 
//Will produce: http://localhost:8080/project/web/category/mobiles/store/samsung 
+1

'# httpServletRequest.requestURL' làm việc cho tôi – petter

+0

' $ {# httpServletRequest.requestURI} 'hoạt động tốt (Thymeleaf Spring4 2.1.5) – klakegg

+1

Trong ứng dụng của tôi, requestURI cho tôi một cái gì đó như thế này: [/ store/something] trong khi requestURL cho tôi một cái gì đó như thế này: [https://www.example.com/store/something]. Tôi chọn cho requestURL vì url hoàn chỉnh tốt hơn cho trường hợp sử dụng của tôi. –

8

Bạn có thể lấy URL hiện tại sử dụng hai dấu nháy đơn '. Ví dụ:

<a th:href="@{''(lang=de)}">Deutsch</a> 

Lưu ý rằng điều này không may không bao gồm các thông số URL hiện tại.

+0

Công việc này didnt cho tôi ... –

+0

tôi chỉ là bây giờ cố gắng một lần nữa và nó hoạt động ...: Current Page. Phiên bản Thymeleaf của bạn là gì? Tôi sử dụng 3.0.2. – yglodt

+0

Không làm việc cho tôi. Tôi đang sử dụng 3.0.3; ví dụ của bạn hiển thị 'Current Page 'này. –

Các vấn đề liên quan