我必须启动一个带有 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)
的操作?
最佳答案
试试这个:
- 配置:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("/client/**")
.addResourceLocations("/client/");
}
- 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>
关于javascript - 使用 ResourceHandlerRegistry 提供静态资源的不同方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42753292/