我已经成功地将我的Angular2应用与Spring Boot后端集成,按照这篇教程的步骤,将编译后的JS资源放置在/ui子目录中。基本上一切都正常,可以通过appname/ui URL访问Angular2应用。
然而,我想知道是否有一种方法能够告诉Spring“穿过”以/ui为父路径的URL,因为目前Spring会拦截所有请求目标为/ui/*的请求,防止Angular2路由器正确地导航到/ui路径下的资源。
目前,我只在其中一个控制器中有这个映射:
通过这种方式,接口可以正常显示在/ui,但是当我直接从浏览器中访问所有它下面的东西时都会收到Spring的404错误提示。 不过,在Angular2应用程序内部进行路由导航完全没有问题。
然而,我想知道是否有一种方法能够告诉Spring“穿过”以/ui为父路径的URL,因为目前Spring会拦截所有请求目标为/ui/*的请求,防止Angular2路由器正确地导航到/ui路径下的资源。
目前,我只在其中一个控制器中有这个映射:
@RequestMapping(value = "/ui")
public String uiIndex() {
return "/ui/index.html";
}
通过这种方式,接口可以正常显示在/ui,但是当我直接从浏览器中访问所有它下面的东西时都会收到Spring的404错误提示。 不过,在Angular2应用程序内部进行路由导航完全没有问题。
编辑
我正在使用以下配置将编译后的Angular2资源从target/ui添加到static/ui文件夹中(我的项目使用maven构建):
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<includes>
<include>*.properties</include>
<include>templates/*.*</include>
</includes>
</resource>
<resource>
<directory>target/ui</directory>
<targetPath>static/ui</targetPath>
</resource>
明确一点,唯一的问题是当我在浏览器中输入像/ui/home/settings这样的URL时,Spring会拦截请求并抛出错误。但是在Angular上下文中,我可以愉快地导航到/ui,然后到/home/settings。
/**
结尾的映射。 - chrylis -cautiouslyoptimistic-@RequestMapping(value = "/{path:[^\\.]*}")
添加 ui/ 片段,但似乎不起作用。不过我还在继续尝试... - Sleeper9