2012-03-21 88 views
0

我正面臨以下問題其實:資源映射Spring框架3

我使用jQuery的Spring。我有控制器:

@Controller 
@RequestMapping(value = "/A") 
public class AController { 
    // not important 
} 

這就是處理所有host/A/...網址罰款。但jQuery CSS樣式使用url(images/...),因此有host/A/index.jsphost/A/images/...的引用。但我沒有這樣的文件夾,因爲/ A /只是「邏輯」URL。

我試圖

<mvc:resources mapping="/images/**" location="/images/" /> 
<mvc:resources mapping="/A/images/**" location="/images/" /> 

添加到我的web.xml,但現在看來,這是行不通的(第一個是工作的罰款)。例如,當我嘗試測試這個時,host/A/test.png不起作用。

當然,我可以修改jQuery源代碼,但我不會這樣認爲。

也許我可以使用UrlRewriteFilter如果沒有簡單的解決方案。

回答

1

我建議你使用BASE標籤在生成的HTML:

<html> 
    <head> 
     <base href="http://localhost:8080/myApp/" /> 
     .... 

然後,所有的圖像請求工作將http://localhost:8080/myApp/images/...是否如果你位於http://localhost:8080/myApp/http://localhost:8080/myApp/A/

+0

謝謝,它對我來說工作正常 – Betlista 2012-03-21 16:14:39

+0

只需注意其他人,有[基地標記問題IE8和IE9](http://stackoverflow.com/questions/3926197/html-base-tag-and-local-folder-path-with-internet-explorer)。 – Betlista 2012-03-22 10:22:59

+0

@Betlista:這不是一個錯誤,因爲W3Schools鏈接說:'基地址必須是一個絕對的URL!' – sinuhepop 2012-03-22 10:31:34

0

如果您在如Tomcat應用服務器的時候,你可以在你的web.xml文件中做到這一點:

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>/images/*</url-pattern> 
    </servlet-mapping> 

在我的項目,通常我把這樣的事情;)

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>*.PNG</url-pattern> 
    <url-pattern>*.png</url-pattern> 
    <url-pattern>*.gif</url-pattern> 
    <url-pattern>*.js</url-pattern> 
    <url-pattern>*.css</url-pattern> 
    <url-pattern>*.jpg</url-pattern> 
    <url-pattern>*.swf</url-pattern> 
    <url-pattern>*.avi</url-pattern> 
    <url-pattern>*.html</url-pattern> 
    <url-pattern>*.json</url-pattern> 
</servlet-mapping> 

有了這個,你需要創建一個'physical'「./A/images/」文件夾。

在另一個應用程序服務器中,值可能會更改。

+0

嗯,但通過這種方式,我必須多次複製所有邏輯URL的圖像'/ A/...','/ B/...',我不喜歡這個想法。如果我想這樣做,那麼簡單的''將以完全相同的方式工作。 – Betlista 2012-03-21 13:40:22

+0

哦,okok ....那麼,我不知道沒有使用UrlRewriteFilter的答案....對不起:( – Nullpo 2012-03-21 13:47:28