我想知道有沒有人可以幫忙。我們正在將Spring Webflow 2應用程序從使用基於jsp的視圖層轉換爲基於Thymeleaf的視圖。Thymeleaf可以訪問Spring servletContext嗎?
對於這個大多數情況,這是好的,但現在我正在努力讓Thymeleaf訪問我們在servletContext
中放置的對象。
因此,我們有(實施ServletContextAware
和InitializingBean
)
爲了簡單起見被放在servletContext
爲bean的一部分的對象,可以說這是一個字符串:
public class ReferenceDataBuilder implements ServletContextAware, InitializingBean {
public void setServletContext(ServletContext p_context) {
p_context.setAttribute("referenceData", "test text");
}
在我們的基於JSP的觀點,我們可以訪問referenceData
對象是這樣的:
<p><c:out value="${referenceData}"/></p>
由MAG它知道它可以訪問的各種範圍(servletContext
,flowScope
,flashScope
等),並且(我在猜測?)搜索每個範圍,直到找到匹配的屬性。結果是:
<p>test text</p>
在視圖內呈現。
在我們thymeleaf模板,我們試圖做同樣的事情:
<p th:text="${referenceData}"/></p>
但這只是簡單地返回一個空字符串。該視圖生成一個空字符串:
<p></p>
(但我認爲EL實際上正在返回一個空)
我敢肯定,如果referenceData
對象是一個範圍的屬性,如flowScope
或flashScope
這將工作 - 但它不是,它的屬性servletContext
。
有誰知道thymeleaf是否可以通過EL訪問servletContext
?也許我需要使用不同的語法?
乾杯
彌敦道
謝謝Zemi地圖
或者更簡單的方法,這完美的作品。再次感謝 –
我試圖做'$ {#ctx.getContextPath()}'但是這給了我一個錯誤,就好像該方法不存在一樣。我可以在Thymeleaf中調用'$ {#ctx.getContextPath()}'嗎? – trusktr