Micronaut + Angular : 刷新页面
Micronaut + Angular : Refresh page
我正在使用 Micronaut 和 Angular 4.
构建应用程序
我已将 Micronaut 配置为服务静态资源
micronaut:
router:
static:
resources:
enabled: true
mapping: /**
paths: classpath:public
一切正常(DefaultURL 路由:http://localhost:8080/dashboard)。
Angular 应用程序已加载,用户与应用程序交互并正确导航路线。
在控制器中,我将服务器配置为重定向到 index.html.If 服务器中不存在该路径。
@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"
中的路线
请帮我解决这个问题
谢谢
这是因为您正在重定向到 /index.html
。先前请求的信息丢失。您应该直接呈现 html 而不是重定向。
有几种工具可以做到这一点,包括使用 resourceResolver
解析类路径上的 html。您可以 return 一个 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
找到我已实施的工作代码。
@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);
}
}
我正在使用 Micronaut 和 Angular 4.
构建应用程序我已将 Micronaut 配置为服务静态资源
micronaut:
router:
static:
resources:
enabled: true
mapping: /**
paths: classpath:public
一切正常(DefaultURL 路由:http://localhost:8080/dashboard)。 Angular 应用程序已加载,用户与应用程序交互并正确导航路线。
在控制器中,我将服务器配置为重定向到 index.html.If 服务器中不存在该路径。
@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"
中的路线请帮我解决这个问题 谢谢
这是因为您正在重定向到 /index.html
。先前请求的信息丢失。您应该直接呈现 html 而不是重定向。
有几种工具可以做到这一点,包括使用 resourceResolver
解析类路径上的 html。您可以 return 一个 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
找到我已实施的工作代码。
@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);
}
}