Angular RouterModule в Java WAR - PullRequest
       15

Angular RouterModule в Java WAR

0 голосов
/ 01 июня 2018

Я использую функцию маршрутизации Angular в своем приложении Angular 6.0.5.Следовательно, в моем приложении есть пути, такие как:

  • http://localhost:8080/area
  • http://localhost:8080/barn
  • http://localhost:8080/tower

Запускмое приложение, использующее ng serve, работает хорошо.Я могу напрямую ввести адрес, такой как http://localhost:8080/barn, в браузер, и он загрузит приложение и перейдет в соответствующее место в приложении.

После создания приложения я скопирую весь контент /dist/ вJava WebApplication, который приводит к WAR после компиляции.

Для его сборки я использую ng build --prod --build-optimizer --base-href=/myappdir/

Когда я запускаю WAR на сервере приложений, таком как Wildfly, я могу успешно перейти по URL-адресу http://localhost:8080/myappdir/ и загрузите приложение.Нажатие на некоторую кнопку маршрутизации в приложении также успешно изменяет URL-адрес, например, http://localhost:8080/barn, но если я сам наберу в браузере URL-адрес http://localhost:8080/barn и затем нажму клавишу ввода, я получаю сообщение об ошибке, что страница не может быть загружена.

Если я запускаю приложение Angular, которое использует функциональность маршрутизации Angular на веб-сервере, таком как Nginx, я должен указать веб-серверу указать на файл index.html, даже если URL запрашивает другой файл.Так что с Nginx это будет сделано с конфигурацией , например: try_files $uri $uri/ =404;.Поэтому я думаю, что проблема в файле WAR та же.

Что я должен настроить в файле WAR, чтобы он указывал на файл index.html?

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Вы можете использовать хеши для маршрутов.Таким образом, вы не сломаете это.В вашем app.module.ts:

RouterModule.forRoot( yourAppRoutes, { useHash: true });
0 голосов
/ 01 июня 2018

Хорошо, я сам это выяснил.Таким образом, в случае, если кто-то пытается сделать то же самое, что и я, здесь приведено описание решения этой проблемы без внесения изменений в веб-сервер.

Добавление страницы с ошибкой 404 в web.xml внутри проекта Java,Следующие четыре строки сделают трюк:

<web-app ...>

    ...

    <error-page>
        <error-code>404</error-code>
        <location>/index.html</location>
    </error-page>

</web-app>
...