2014-02-26 58 views
2

我有一個SPRING應用程序直接在Java或Tomcat 7服務器上運行(使用spring啓動)。我需要爲幾頁(映射)創建絕對URL,以便可以通過電子郵件發送這些鏈接。我需要使用Thymeleaf爲我的SPRING應用程序創建絕對URL

我認爲這很簡單,但現在看起來很難。我更喜歡100%寫在Thymeleaf上的解決方案,但如果這是不可能的,我當然可以向Thymeleaf提供來自我的Java代碼的一些變量。

任何人在Thymeleaf解決過這個問題嗎?

回答

3

在我看來,你應該在屬性文件中提供一個服務器URL,並且在Thymeleaf中訪問它。您可以通過在一個視圖訪問的Spring bean做到這一點:

<div th:text="${@urlService.getApplicationUrl()}">...</div> 

在上面的例子中,urlService是一個Spring bean。

請參閱這樣的回答:https://stackoverflow.com/a/675903/718515

您可能也有興趣在#ctx變量,使您可以訪問servletContext。見Thymeleaf的文章:http://www.thymeleaf.org/doc/html/Using-Thymeleaf.html#base-objects

我希望它有幫助!

+0

到Thymeleaf文檔的鏈接已經死了。 – Dragomok

0

我剛剛做了一些類似的事情,我使用Thymeleaf來生成HTML電子郵件(當然,鏈接必須是絕對的)。我使用Thymeleaf的內置@{}鏈接語法來創建相對於服務器的相應URL(因爲它調用HttpServletResponse.encodeURL(),我需要做一個自定義實現來完成一些額外的URL調用),然後使用Spring的ServletUriComponentsBuilder來製作使用HttpServletRequest服務器信息的絕對URL。

<p th:with=" 
    re[email protected]{|/my/path/${customer.code}/info/|}, 
    customerInfoPath=${T(org.springframework.web.servlet.support.ServletUriComponentsBuilder).fromContextPath(#httpServletRequest).replacePath(relativeCouponPath).toUriString()}"> 
    Go see your info at 
    &lt;<a th:href="${customerInfoPath}" th:text="${customerInfoPath}">Link</a>&gt;. 
</p> 

有可能是一個更好的辦法,但這個工作很適合我和做的完全URL內Thymeleaf絕對的決策(儘管使用Spring的庫)。

相關問題