I am successfully using the following to resolve an image location and put it on a page:
String resolvedImage = VaadinServletService.getCurrent().resolveResource("frontend://img/logo.png", VaadinSession.getCurrent().getBrowser()); Image logo = new Image(resolvedImage, "Logo");
However, this not work for a Stylesheet or for JavaScript files that I would like to load on another page: String styleSheet = VaadinServletService.getCurrent().resolveResource("frontend://js/v4/style.css", VaadinSession.getCurrent().getBrowser()); String script = VaadinServletService.getCurrent().resolveResource("frontend://js/v4/script.js", VaadinSession.getCurrent().getBrowser());
Strange thing is that the content is correctly resolved in development mode, but not when I run with productionMode=true.
Hi,
one general question and one is about your specific code/need:
"frontend://img/logo.png", "frontend://js/v4/style.css" what actual FS path they refer to ?
It’s quite rare situation when you need to use resolveResource in your application. May be there is another way to do what you need. Could you please clarify what you are trying to achieve with the resolved resource String ?
I keep my resources in (the subdirectories of) this folder: [application_name] /src/main/resources/META-INF/resources/frontend/. It is my understanding that this is correct location for Spring Boot-based applications.
In here, I have the following subdirs for static content: html/ img/ js/,
which contain the files you are referring to: img/logo.png js/v4/style.css.
The js/v4 folder contains some more JavaScript files that I use for the D3 example I am working on.
I am not trying to do anything special, on the contrary, I would say. I just want to access/load the content in a way that works both for development and for production mode.