【问题标题】:Spring-Maven: Unable to load Javascript fileSpring-Maven:无法加载 Javascript 文件
【发布时间】:2014-08-24 15:42:13
【问题描述】:

以下是我的应用程序的文件夹结构,

我在 webapp 下创建了一个 resource 文件夹,其中包含 CSSJS

的资源文件夹>

在 servlet-context 文件中,我已将资源映射到 resources/inspiremetheme,如下所示,

<mvc:resources mapping="/resources/**" location="/resources/inspiremetheme/" />

我已经包含在JSP页面如下,

<head>
    <script type="text/javascript" src="/resources/js/jquery-1.11.1.js"></script>
    <script type="text/javascript" src="/resources/js/inspireme.js"></script>
    <link type="text/css" rel="stylesheet" href="<c:url value="resources/css/global.css"/>" />
</head>

这里的问题是我无法加载我的 JS 文件,因为 CSS 文件已正确加载。 我无法理解我错过了什么。

更新 - 1: 解压后的文件结构如下,

鼓舞我 | |------元信息 | |------资源 --> 启发主题 --> css 和 js 文件夹 | |------ WEB-INF --> 类、jsp、lib、web.xml

【问题讨论】:

  • 你检查过你的 .war 文件了吗?尝试解压缩(unjarring)它以查看它是如何构建的。
  • “resources”和“js”之间的那个“inspiremetheme”目录呢?你的路径不包括那个。
  • @Pointy 我在 Spring 上下文文件中给出了路径。
  • 是的,但&lt;script&gt; 标签不包含它。浏览器不知道你的 Spring 配置。
  • @ElGuapo 我在解压后更新了文件结构。请看一看。

标签: java javascript css spring maven


【解决方案1】:

你把&lt;c:url value=".."/&gt; 弄乱了脚本标签..

<c:url value="/resources/js/jquery-1.11.1.js" var="myUrl" />
<script type="text/javascript" src="${myUrl}"/><!-- comment --></script>

还要在 中添加注释:这将阻止 jspx 解析器最小化标记。

如果解析器最小化你的标签,你会得到结果:

<script type="text/javascript" src="/WEBAPP/resources/js/jquery-1.11.1.js"/> 

而不是

<script type="text/javascript" src="/WEBAPP/resources/js/jquery-1.11.1.js"></script>

这可能会导致某些浏览器无法正常工作

【讨论】:

  • +1 就像一个魅力。请问我也可以知道原因吗?我错过了什么..为什么以前不起作用?
  • @Che 评论的原因?
  • Naah .. 之前无法正常工作的原因..?如果我给出假设我没有在上下文文件中提到的位置的整个路径,那么我将如何给出路径?
  • @Che 如果没有 c:url,您的 html 中将包含:。使用 c:url 你将拥有:。在第一种和第二种情况下检查浏览器生成的 html 代码,看看会发生什么:)
【解决方案2】:

如果您决定使用 Java config 而不是 xml,请选择以下解决方案。

@Configuration
@EnableWebMvc
@ComponentScan
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/jsp/", ".xml");
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/inspiremetheme/css/**", "/inspiremetheme/js/**")
                .addResourceLocations("classpath:/inspiremetheme/css/", "classpath:/inspiremetheme/js/");
    }

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}

【讨论】:

    猜你喜欢
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 2011-09-18
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多