我正在努力解决一个问题,即 spring-boot 没有在 8080 上提供前端文件(通过 angular 创建)。我运行ng build将 .ts ng 组件文件转换为 .js 并在 outputPath:/resource/static 文件夹中生成(我在 angular.json 文件中设置 outputPath)。创建了一个控制器来从资源/静态提供内容。 @Controller public class AppController { @GetMapping("/") public String index() { return "index"; } }主类(src/mainjava/webapp/app):@Configuration@EnableAutoConfiguration@ComponentScan({"webapp"})public class Application extends WebMvcAutoConfiguration { public static void main(String[] args) { SpringApplication app = new SpringApplication(Application.class); app.run(args);}}Ranng build --base-href .生成的文件如下图所示。索引.html:<!doctype html><html><head> <meta charset="utf-8"> <title>Welcome app</title> <base href="/"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="icon" type="image/x-icon" href="favicon.ico"></head><body> <app-root></app-root><script type="text/javascript" src="runtime.js"></script><script type="text/javascript" src="polyfills.js"></script><script type="text/javascript" src="styles.js"></script><script type="text/javascript" src="vendor.js"></script><script type="text/javascript" src="main.js"></script></body></html>注意:这是一个gradle项目。前端代码位于:src/main/java/webapp/frontend dir/resources 中的 Application.ymlserver: servlet: context-path: / port: 8080我什至尝试在 /resources 下添加 html 文件,以查看 tomcat 是否提供此文件夹中的任何内容。我也无法访问 page1.html,因此不确定 angular/ng 内容有何不同,以至于在 tomcat 启动并运行时它无法提供服务。
3 回答

繁花不似锦
TA贡献1851条经验 获得超4个赞
这是因为您正在使用隐式包含@ResponseBody 的@RestController 注释。您必须使用 @Controller for Spring boot 来自动加载 html 模板。
@Controller
public class AppController {
@GetMapping("/")
public String index() {
return "index";
}
}

UYOU
TA贡献1878条经验 获得超4个赞
在 Controller 方法上尝试将 @RequestMapping 注释放在一个建议中
像这样:
@Controller
@RequestMapping("/")
public class AppController{
}
在 ComponentScan (basepackages{"com.packagename of modal classes"})
添加回答
举报
0/150
提交
取消