为什么我的Spring MVC视图无法加载我的WAR文件资源?

时间:2018-03-14 21:13:38

标签: java spring-mvc web

我有一个Java / Spring Web应用程序。

显示视图的控制器代码如下所示:

@RequestMapping(value = { "showmessage/{messageId}" }, method = RequestMethod.GET)
public ModelAndView viewMessage(Model model,  @PathVariable("messageId") Integer messageId) throws Exception {
    /* do stuff */
    return new ModelAndView("show-message","message",message);
}   

显示show-message.jsp文件的内容。

问题是,show-message.jsp文件正在尝试加载myapp.WAR文件中的资源...例如......

/resources/dist/js/jquery/jquery-validate-1.17.0/jquery.validate.js

浏览器报告无法从此网址加载此内容...

http://localhost:8080/myapp/showmessage/resources/dist/js/jquery/jquery-validate-1.17.0/jquery.validate.js

...因为资源实际上就在这里......

http://localhost:8080/myapp/resources/dist/js/jquery/jquery-validate-1.17.0/jquery.validate.js

如果我从" resources / dist /...&# 34更改JSP中的资源行;到SLASH" / resources / dist /..."仍然无法正常工作,因为它试图加载...

http://localhost:8080/resources/dist/js/jquery/jquery-validate-1.17.0/jquery.validate.js

......然后失败了。

我的应用程序出了什么问题,我该如何使用?

1 个答案:

答案 0 :(得分:1)

在您的JSP中,您最有可能使用相对href值,例如:

<scripts src="resources/dist/js/jquery/jquery-validate-1.17.0/jquery.validate.js"></script>

浏览器会根据您的showmessage/{messageId}注释针对当前网址@RequestMapping解析它。

尝试为脚本指定绝对URL。由于您有JSP,因此可以使用<c:url>

<scripts src="<c:url value="/resources/dist/js/jquery/jquery-validate-1.17.0/jquery.validate.js"/>"></script>