问题描述
我正在运行一个非常基本的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。