当 Tomcat 容器上的 运行 时,Polymer 资源 URL 在 'context' 下不起作用

Polymer resource URLs does'nt work under 'context' when running on Tomcat container

我有一个简单的 Vaadin Flow 应用程序(带有 SpringBoot 集成)部署在 Tomcat 作为 war 文件。应用程序在本地开发模式下 运行 正常,但在上下文环境下部署到容器中时,它没有显示任何内容。当我查看页面源代码时,我可以看到聚合物资源 ​​URL 以“/frontend/”开头,因此上下文不受尊重,浏览器无法加载它。

我还可以看到(在浏览器的页面源代码中)一些 URL 以“./frontend/”开头,一些以“/frontend/”开头,请参见下面的示例。我尝试了这个那个,但无法弄清楚如何让 Vaadin 生成相对的 URL 或尊重 Tomcat 容器给出的上下文。知道这里出了什么问题吗?所有这些聚合物资源都是来自 Vaadin 的普通资源,而不是自定义资源。

<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">

计划在不久的将来改进此行为,这里是一个issue link用于跟踪进度。

目前,您可以通过为前端文件添加自定义 servlet 来解决此问题:

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

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