Java 弹簧靴&x2B;同一服务器上的Angular2
我成功地将Angular2应用程序与Spring Boot后端集成在一起,将编译后的JS资源放在a/ui子目录中。基本上一切正常,Angular2应用程序可以通过appname/UIURL访问 但是,我想知道是否有一种方法可以告诉Spring“通过”/ui路径的子级的URL,因为目前Spring会拦截每个以/ui/*为目标的请求,从而阻止Angular2路由器正确导航到/ui路径下的资源 目前,我的一个控制器中只有此映射:Java 弹簧靴&x2B;同一服务器上的Angular2,java,spring,angular,spring-boot,Java,Spring,Angular,Spring Boot,我成功地将Angular2应用程序与Spring Boot后端集成在一起,将编译后的JS资源放在a/ui子目录中。基本上一切正常,Angular2应用程序可以通过appname/UIURL访问 但是,我想知道是否有一种方法可以告诉Spring“通过”/ui路径的子级的URL,因为目前Spring会拦截每个以/ui/*为目标的请求,从而阻止Angular2路由器正确导航到/ui路径下的资源 目前,我的一个控制器中只有此映射: @RequestMapping(value = "/ui") publi
@RequestMapping(value = "/ui")
public String uiIndex() {
return "/ui/index.html";
}
这样,界面会正确地显示在/ui上,但是Spring会给我发送错误和404,当我直接从浏览器中处理它们时,。不过,Angular2应用程序中的路由器导航功能非常出色
编辑
我使用此配置将编译后的Angular2资源从target/ui添加到static/ui文件夹(我的项目使用maven build):
${project.basedir}/src/main/resources
*.物业
模板/**
目标/用户界面
静态/用户界面
需要明确的是,唯一的问题是,当我在浏览器中输入URL(如/ui/home/settings)时,Spring会拦截请求并抛出错误。我可以很高兴地导航到/ui,然后在角度上下文中导航到/home/settings。您可以添加ResourceHandler来配置spring boot中的静态内容服务 范例
@Configuration
public class StaticResourceConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/ui").addResourceLocations("file:/path/to/your/angular/files");
}
}
看
现在,你提到的教程的第5步有一个更简洁的方法,你跳过了那一步吗?(src/main/resources/static)经过一番尝试和错误,我终于做到了我想要的。非常感谢@EpicPandaforce和 最终的解决方案是在
@控制器中创建@RequestMapping
,如下所示:
@RequestMapping(value = "/ui/**/{path:[^\\.]*}")
public String redirectUi() {
return "forward:/ui/index.html";
}
我认为最简单的方法就是使用角度散列定位策略
从'@angular/common'导入{LocationStrategy,HashLocationStrategy}代码>
{provide:LocationStrategy,useClass:HashLocationStrategy}
我希望能提供帮助。Spring boot应用程序中静态资源的标准位置在src/main/resources/static下。只要把你的角度资源放在那里,Spring Boot就会为你服务。你可能想要一个以/**
结尾的映射。你看到了吗?还有可能@EpicPandaForce是的,我想我需要这样的东西,但我的角度资源似乎不在static/下,而是在static/ui下。我尝试使用@RequestMapping(value=“/{path:[^\\\.]*}”)
添加ui/片段,但似乎不起作用。我仍在努力……请看我编辑的问题,我希望现在能更清楚一点,我真正的问题是什么。:)我想在“path:”位之前有一个额外的“[”。
@RequestMapping(value = "/ui/**/{path:[^\\.]*}")
public String redirectUi() {
return "forward:/ui/index.html";
}