2016-05-31 7 views
0

Ich versuche ein Projekt mit Vaadin 7.6 und Spring Boot zu programmieren. Ich möchte in der Ma-Seite ein Bild anzeigen. Dafür habe ich das Buch von Vaadin gelesen, in dem ich gefunden habe:Bild in einem Vaadin 7.6 und Spring Boot Projekt lesen

// 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); 

Aber es gibt ein Problem. Beim Spring-Boot gibt es keinen WEB-INF-Ordner. Ich habe diesen Ordner bekommt:

  • Ressourcen
  • Ressourcen/static
  • Ressourcen/templates

ich das Verzeichnis erstellt habe resources/static/images und ich habe ein Bild gespeichert. Nachdem, ich habe so einen Code versucht:

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

Aber wenn ich ma Seite versuchen, habe ich die Ausnahme bekam: java.io.FileNotFoundException:/private/var/Ordner/nm/kv40tr650llcmk6rssnxzt900000gn/T/tomcat-docbase.5908407388863057264.8080/images/telecaster.jpg (Keine solche Datei oder Verzeichnis). Mein Bild ist gut bereitgestellt, denn wenn ich die URL http://localhost:8080/images/telecaster.jpg versuche, bekomme ich das Bild.

Wie kann ich von meinem Vaadin-Quellcode auf Bilder (und alle Dateitypen) zugreifen?

Antwort

0

Ich habe eine Lösung gefunden. Ich erstelle das Verzeichnis src/main/WEB-INF/images und definiere den Ordner WEB-INF als Ressourcenordner.

Nach schreibe ich einen klassischen Code über Ressource:

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

Haben Sie versucht, den Vorschlag der andere Antwort? Weil ThemeResource der bevorzugte Weg ist. –

2

Alternativ können Sie ein Bild über die ThemeResource-Klasse laden. Die Klasse sucht standardmäßig nach Ressourcen im Standardverzeichnis VAADIN/themes/{themeName}. Es folgt ein Codebeispiel:

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

wo Bilder ist ein Verzeichnis unter Vaadin/themes/{} THEME Verzeichnis.

Verwandte Themen