2012-03-21 105 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