阅读Vaadin 7.6和Spring Boot项目中的图像

时间:2016-05-31 21:52:31

标签: java spring-boot vaadin

我正在尝试使用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(No这样的文件或目录)。 我的图片部署得很好,因为当我尝试网址http://localhost:8080/images/telecaster.jpg时,我会得到图片。

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

2 个答案:

答案 0 :(得分:2)

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

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

其中images是VAADIN / themes / {themeName}目录下的目录。

答案 1 :(得分:0)

我找到了解决方案。 我创建了目录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);