Sle*_*er9 5 java spring spring-boot angular
我在本教程之后成功地将我的Angular2应用程序与Spring Boot后端集成,将已编译的JS资源放到/ ui子目录中.基本上一切正常,Angular2应用程序可以通过appname/ui URL访问.
但是,我想知道是否有办法告诉Spring'传递' / ui路径的子网,因为当前Spring拦截了每个请求目标/ ui/*,阻止Angular2路由器正确导航到/ ui路径下的资源.
目前,我只在我的一个控制器中有这个映射:
@RequestMapping(value = "/ui")
public String uiIndex() {
return "/ui/index.html";
}
Run Code Online (Sandbox Code Playgroud)
有了这个,接口正确地显示在/ 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>
Run Code Online (Sandbox Code Playgroud)
要明确的是,唯一的问题是,当我在浏览器中输入像/ ui/home/settings这样的URL时,Spring会拦截请求并抛出错误.我可以愉快地导航到/ ui,然后导航到Angular上下文中的/ home/settings.
经过一番尝试和错误,我终于做到了我想要的。非常感谢@EpicPandaforce的有用评论和这篇 StackOverflow 帖子
最终的解决方案是创建一个@RequestMapping
像@Controller
这样的:
@RequestMapping(value = "/ui/**/{path:[^\\.]*}")
public String redirectUi() {
return "forward:/ui/index.html";
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2441 次 |
最近记录: |