Я пытаюсь переместить свое приложение Vaadin 23.2.17 на другое сопоставление URL-адресов. Я использую безопасность Spring Boot, и все, кажется, работает хорошо, я следил за документацией, например, настраивая параметр application.properties
vaadin.urlMapping = /vaadin/*
приложение запускается в новом контексте, и я также зарегистрировал новый VaadinServlet в своем классе Application следующим образом:
@Bean
public ServletRegistrationBean frontendServletBean() {
ServletRegistrationBean bean = new ServletRegistrationBean<>(new VaadinServlet() {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
if (!serveStaticOrWebJarRequest(req, resp)) {
resp.sendError(404);
}
}
}, "/vaadin/frontend/*");
bean.setLoadOnStartup(1);
return bean;
}
Несмотря на это, кажется, что приложение не может прочитать статический контент из каталога frontend/images. Например, у меня есть в моем коде:
Image image = new Image("images/company-logo.gif", "company-logo");
portalLogo.add(image);
но это изображение не отображается, так как оно не найдено.
Кто-нибудь может мне помочь?
Спасибо Джузеппе.





После того, как вы переместите Vaadin из корня, ваша задача — обслуживать статическое Ресурсы:
VaadinServletобрабатывает статические запросы ресурсов, если вы их сопоставили к/*. Если нет, контейнер сервлета позаботится о статическом ресурсе. Запросы.Источник: https://vaadin.com/docs/v23/advanced/loading-resources/#static-resources
Поскольку обычно вы не хотите менять все свои ссылки в коде, самый простой способ с SpringBoot - поместить ресурс в:
src/main/resources/static/
Например. ваш файл:
src/main/resources/static/images/company-logo.gif
Большое спасибо, я решил, поместив статический контент в папку scr/main/resources/static/< urlMapping >/images.