在 Vaadin 7.6 和 Spring 引导项目中读取图像

Read image in a Vaadin 7.6 and Spring Boot project

我正在尝试使用 Vaadin 7.6 和 Spring Boot 编写项目代码。我想在 ma 页面中显示图像。为此,我阅读了 Vaadin 的书,我在其中找到了:

 // Find the application directory
 String basepath = VaadinService.getCurrent()
                           .getBaseDirectory().getAbsolutePath();
 // Image as a file resource
 FileResource resource = new FileResource(new File(basepath + "/WEB-INF/images/image.png"));
 // Show the image in the application
Image image = new Image("Image from file", resource);

但是有一个问题。使用 Spring 引导,没有任何 WEB-INF 文件夹。我有那些文件夹:

我已经创建了目录 resources/static/images 并保存了一张图片。之后,我尝试了这样的代码:

String basePath = VaadinService.getCurrent().getBaseDirectory().getAbsolutePath();
FileResource resource = new FileResource(new File(basePath + "/images/telecaster.jpg"));
Image telecaster = new Image("Telecaster", resource);

但是当我尝试 ma 页面时出现异常:java.io.FileNotFoundException: /private/var/folders/nm/kv40tr650llcmk6rssnxzt900000gn/T/tomcat-docbase.5908407388863057264.8080/images/telecaster.jpg(没有这样的文件或目录)。 我的图像部署得很好,因为当我尝试 URL http://localhost:8080/images/telecaster.jpg 时,我得到了图像。

如何从我的 Vaadin 源代码访问图像(和任何文件类型)?

或者,您可以通过 ThemeResource class 加载图像。 class 默认在标准 VAADIN/themes/{themeName} 目录下查找资源。以下是代码示例:

new ThemeResource("images/admin-user.jpg")

其中图像是 VAADIN/themes/{themeName} 目录下的一个目录。

我找到了解决办法。 我创建目录 src/main/WEB-INF/images 并将文件夹 WEB-INF 定义为资源文件夹。

之后我写了一段关于资源的经典代码:

    String imagePath = IdeaxBoxUI.class.getClassLoader().getResource("images/telecaster.jpg").getPath();
    FileResource resource = new FileResource(new File(imagePath));
    Image telecaster = new Image("Telecaster", resource);