Vaadin 14如何将vaadin Servlet移至其他URL?

问题描述

我正在运行一个非常基本的vaadin应用程序。该应用程序具有春季启动支持,我定义了一些其他API。

我已经使用org.springdoc:springdoc-openapi-ui:1.4.4添加了OpenAPI文档,该文档在添加vaadin之前效果很好。

按照vaadin spring-boot教程中所示添加vaadin依赖关系并创建视图(有效)后,无法再使用swagger UI。

在我看来,vaadin完全接管了所有Web请求。深入研究,我发现vaadin注册了一个新的servlet并捕获了所有请求。

我没有找到有关如何配置它的任何文档-我希望有人可以配置vaadin,使其从另一条路径(例如/ui或类似路径)提供UI。

我尝试设置

vaadin:
   url-mapping: "/ui/*"

在我的application.yaml中–但这会导致我的vaadin视图空白页(无错误), 并且vaadin Servlet仍会接管/

我使用spring.boot 2.3.2.RELEASE,vaadin 14.3.1

解决方法

要覆盖的值是(请注意camelCase而不是kebab-case):

vaadin:
  urlMapping: /ui/*

使用烤肉串包装(确实)无效。不出所料,这是一个错误。参见https://github.com/vaadin/spring/issues/637

从当时的文档来看:

您可以在application.properties文件中设置Spring Boot的属性。

示例:在application.properties中设置Spring URL映射。

vaadin.urlMapping=/my_mapping/*

默认情况下,URL映射为/*

需要一个附加的servlet,例如/my_mapping/*来处理非根servlet的前端资源。可以在您的应用程序类中定义servlet。有关示例,请参见此Application class


来源:https://vaadin.com/docs/v14/flow/spring/tutorial-spring-configuration.html#using-spring-boot-properties

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...