更改URL请求映射时,JSP无法找到资源

时间:2016-02-12 19:15:59

标签: jsp spring-mvc jetty

我有一个运行良好的SpringMVC JSP,部署到Jetty。它包含许多从战争加载的脚本,css等。我正在使用Chrome最新版本进行测试。

我的上下文根被定义为/ MYFIRM / myapplication。

现在我们有业务要求将一些但不是所有的jsps映射到/ MYFIRM / admin / myapplication /(添加管理部分)

所有这些JSP都在一个控制器中,我添加了

@Controller
@RequestMapping("/admin")

现在,页面源加载正常,但找不到脚本和其他资源。

资源定义如下:     < link rel =“stylesheet”href =“< c:url value ='/ css / demo.css'/>”> 和     < script type =“text / javascript”src =“js / common / UndoBuffer.js”>< / script>

当我查看页面源时,它在资源URL中有管理员。

现在,我尝试将资源映射添加到我的servlet xml

<mvc:resources mapping="/admin/js/**" location="/js/" />
<mvc:resources mapping="/admin/css/**" location="/css/" />

但这不起作用。事实上,当我查看页面源时,管理员就不见了,当我点击页面源中嵌入的URL时(管理员被正确删除)它会在浏览器窗口中加载正确的资源。

但是当我查看开发者控制台时,它仍会在网址中显示管理员并给我一个错误。

我已经尝试将我的资源移动到一个名为admin的新子目录,该目录有效,但还有其他问题

有没有人有任何想法,我可能会失踪?

1 个答案:

答案 0 :(得分:0)

I had the same problem (web app deployed on Tomcat). What worked for me was adding the static resources to my web.xml

class Box<S>: HasValue {
    var val: S?
}

let boxOfString = Box<String>()
boxOfString.val = "hello world"

let boxOfInt = Box<Int>()
boxOfInt.val = 12

merge(boxOfString, into: boxOfInt) // << compile error

let boxOfWords = Box<String>()
boxOfWords.val = "What a wonderful world"

merge(boxOfString, into: boxOfWords)
print(boxOfWords.val) // Optional("hello world")

Note that default means that the default servlet should handle the static resource(s).