Микронавт + Угловой: Обновить страницу - PullRequest
0 голосов
/ 03 октября 2018

Я создаю приложение с 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 голосов
/ 06 октября 2018

Найдите рабочий код, ниже которого я был реализован.

@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);
    }
}
0 голосов
/ 05 октября 2018

Это потому, что вы перенаправляете на /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

...