URL-адреса полимерных ресурсов не работают в «контексте» при работе в контейнере Tomcat - PullRequest
0 голосов
/ 01 октября 2018

У меня есть простое приложение Vaadin Flow (с интеграцией SpringBoot), развернутое в Tomcat как файл войны.Приложение работает нормально в режиме разработки локально, но при развертывании в контейнере в контексте ничего не отображается.Когда я просматриваю исходный код страницы, я вижу, что URL-адреса полимерных ресурсов начинаются с "/ frontend /", поэтому контекст не учитывается, и браузер не может его загрузить.

Более того, я вижу (в источнике страницы в браузере), что некоторые URL-адреса начинаются с "./frontend/", а некоторые с "/ frontend /", см. Пример ниже.Я пробовал то и это, но не могу понять, как заставить Vaadin генерировать URL-адреса, чтобы они были относительными или учитывали контекст, заданный контейнером Tomcat.Есть идеи, что здесь не так?Все эти полимерные ресурсы являются общими от Ваадина, а не обычаев.

<link rel="import" href="/frontend/bower_components/polymer/lib/utils/array-splice.html">
<link rel="import" href="/frontend/bower_components/polymer/lib/mixins/gesture-event-listeners.html">
<link rel="import" href="/frontend/bower_components/polymer/lib/elements/dom-if.html">
<link rel="import" href="/frontend/bower_components/polymer/lib/mixins/properties-changed.html">
<link rel="import" href="/frontend/bower_components/polymer/lib/utils/gestures.html">
<link rel="import" href="/frontend/bower_components/polymer/lib/elements/array-selector.html">
<link rel="import" href="/frontend/bower_components/polymer/lib/legacy/polymer.dom.html">


<link rel="import" href="./frontend/bower_components/vaadin-button/theme/lumo/vaadin-button.html">
<link rel="import" href="./frontend/bower_components/vaadin-ordered-layout/theme/lumo/vaadin-vertical-layout.html">

1 Ответ

0 голосов
/ 01 октября 2018

Это поведение планируется улучшить в ближайшем будущем, здесь есть ссылка выпуска для отслеживания прогресса.

На данный момент вы можете обойти это поведение, добавив пользовательский сервлет дляОбслуживание файлов внешнего интерфейса:

import javax.servlet.annotation.WebServlet;
import com.vaadin.flow.server.VaadinServlet;

@WebServlet(name = "frontendServlet", asyncSupported = true, urlPatterns = "/frontend/*")
public class FrontendServlet extends VaadinServlet {
}
...