首页 文章

Micronaut Angular:刷新页面

提问于
浏览
0

我正在使用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

请帮助我谢谢

2 回答

  • 0

    它's because you'重定向到 /index.html . 来自先前请求的信息将丢失 . 而不是重定向你应该直接渲染html .

    有几种工具可以做到这一点,包括使用 resourceResolver 来解析类路径上的html . 您可以返回 StreamedFile 实例以将流呈现给响应 .

    可以注入解析器,您可以自己构建流式文件 .

    https://docs.micronaut.io/latest/api/io/micronaut/core/io/ResourceResolver.html https://docs.micronaut.io/latest/api/io/micronaut/http/server/types/files/StreamedFile.html

  • 0

    找到我已经实施的工作代码 .

    @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);
        }
    }
    

相关问题