2011-11-04 62 views
0

我正在尋找一種方法來修改spring:url - 標記實現中的url,而不修改jsps。以類似的方式修改Spring Url

的簡短介紹,解釋什麼是我想要做的:

我有一個應用程序,它在jsp大量使用<spring:url

這樣的東西:

<spring:url value="/resources/style/default.css" var="css_url" /> 
<link rel="stylesheet" type="text/css" media="screen" href="${css_url}"> 
    <!-- required for FF3 and Opera --> 
</link> 

但同樣的圖片,...

現在我想改變的映射關係對資源文件夾了一下,所以它包括當前版本。 (因此,對於1.0.1版本/resources/style/default.css成爲/resources1.0.1/style/default.css)(人前詢問:原因是緩存

我當然不希望修改所有spring:url標籤所有JSP,當我發佈一個新的版本。所以我的第一個想法是添加一個新的ModelMap變量(VERSION),然後修改所有url標記一次(<spring:url value="/resources${VERSION}/style/default.css" var="css_url" />)。 - 這工作。

但我正在尋找一種更好的方式,例如「注入」spring:url - 標籤實施中的版本。因此,標籤本身將替換所有/resources//resources1.0.1/(或當前版本是什麼)。所以我問的是有人有一個想法如何添加一些代碼到spring:url - 標籤實施修改的網址?

我不想使用像成才tuckey UrlRewriteFilter,或者想改變映射,我真的要修改春天的輸出:URL

回答

0

我要麼有一個應用程序上下文屬性並使用普通的JSP EL,或者創建一個自定義標記(例如,<app:versionedUrl>),封裝您想要使用的任何邏輯。

通過在上下文中保留屬性,您可以播放一些緩慢滾動新版本的遊戲,允許特定用戶/組/ /等。在一個版本上「凍結」,等等,如果這對你來說很有意思。

另一種選擇是爲包含版本ID的CSS文件創建映射,並轉發到實際資源或將特定於版本的內容流回。

+0

我已經創建了一個自定義標籤來擴展Spring UrlTag。 – Ralph

0

您可以使用過濾器來映射具有/ resources *的URL,然後修改請求。