首页 > 解决方案 > Micronaut + Angular:刷新页面

问题描述

我正在使用 Micronaut 和 Angular 4 构建一个应用程序。

我已将 Micronaut 配置为提供静态资源

micronaut:
    router:
        static:
            resources:
                enabled: true
                mapping: /**
                paths: classpath:public

一切正常(DefaultURL 路由:http://localhost:8080/dashboard)。Angular 应用程序已加载,用户与应用程序交互并正确导航路径。

在控制器中,我将服务器配置为重定向到 index.html。如果服务器中不存在该路径。

@Get("/{[path:[^\\.]*}")
    @Secured(SecurityRule.IS_ANONYMOUS)
    @Produces(MediaType.TEXT_HTML)
    public HttpResponse<?> refresh() {
        return HttpResponse.redirect(URI.create("/index.html"));
    }

但是当用户刷新页面时(例如按 F5)。

如果刷新后当前的 Url 是http://localhost:8080/userdetails/status,Angular 应用程序会转到默认路由http://localhost:8080/dashboard,而不是用户所在的路由http://localhost:8080/userdetails/status "

请帮助我谢谢

标签: javaangularmicronaut

解决方案


在下面找到我已实施的工作代码。

@Controller("/")
public class IndexController {
    @Inject
    ResourceResolver res;


    @Get("/{[path:[^\\.]*}")
    @Secured(SecurityRule.IS_ANONYMOUS)
    @Produces(MediaType.TEXT_HTML)
    public HttpResponse<?> refresh(HttpRequest<?> request) {
        StreamedFile indexFile = new StreamedFile(res.getResource("classpath:public/index.html").get());
        return HttpResponse.ok(indexFile);
    }
}

推荐阅读