【问题标题】:Different way to provide static resources with ResourceHandlerRegistry使用 ResourceHandlerRegistry 提供静态资源的不同方式
【发布时间】:2017-08-02 20:36:37
【问题描述】:

我必须启动一个带有 Java 后端的 Angular 1 应用程序。我想使用与前几个月相同的文件夹结构,Angular 1 作为前端,Storngloop 作为后端。

我的前端 Web 应用程序是由这个文件夹结构组成的:

src
  |
  main
    |
    webapp
        |
        client

在 app 文件夹中,整个应用程序由其他 .css、.js、.html 文件中的子文件夹组成(在每个文件夹中都是我的应用程序的一部分。例如:登录表单文件夹,其 .css.html.js 里面的文件等等...)。

类似:

client
      |
      login
          |
          login.html
          |
          login.css
          |
          login.js
      stuff
          |
          stuff.html
          |
          stuff.css
          |
          stuff.js

在 index.html 中我会做 (2):

<link rel="stylesheet" href="client/login/login.css">
...
<script src="client/login/login.js"></script>

所以我想配置我的ResourceHandlerRegistry如下(1):

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "my.package")
public class Configurations extends WebMvcConfigurerAdapter {

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setViewClass(JstlView.class);

        viewResolver.setPrefix("/client/");
        viewResolver.setSuffix(".html");

        registry.viewResolver(viewResolver);
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //resources locations
        registry.addResourceHandler("client/**").addResourceLocations("/client/**");
    }

}

但是当在我的index.html 文件中时,我尝试包含任何.js.css 文件我从服务器获得404 点(2) 中包含的每个资源...正如我所料...我必须这样做(3)

registry.addResourceHandler("client/**").addResourceLocations("/client/", "/client/login/", "/client/stuff/", //ecc... ecc...);

声明我的前端验证的每个资源的每条路径都非常有效!真的,我知道这很丑!

可以在不声明每个资源路径的情况下完成类似(1) 的操作吗?

【问题讨论】:

    标签: javascript java html spring spring-mvc


    【解决方案1】:

    试试这个:

    1. 配置:
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry
            .addResourceHandler("/client/**")
            .addResourceLocations("/client/");
    }
    
    1. Jsps:
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    
    <link rel="stylesheet" href="<c:url value="/client/login/login.css" />">
    <script src="<c:url value="/client/login/login.js" />"></script>
    

    【讨论】:

      猜你喜欢
      • 2015-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-20
      • 1970-01-01
      • 2019-12-13
      相关资源
      最近更新 更多