在Tomcat容器上运行时,聚合物资源URL在"上下文"下不起作用



我有一个简单的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">

此行为计划在不久的将来得到改进,下面是用于跟踪进度的问题链接。

现在,您可以通过添加用于提供前端文件的自定义 servlet 来解决该行为:

import javax.servlet.annotation.WebServlet;
import com.vaadin.flow.server.VaadinServlet;
@WebServlet(name = "frontendServlet", asyncSupported = true, urlPatterns = "/frontend/*")
public class FrontendServlet extends VaadinServlet {
}

最新更新