我正在尝试使用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源代码访问图像(和任何文件类型)?
答案 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);