2015-08-08 4 views
6

Ich benutze Federmvc mit Thymoleaf, um ein Bild auf den Server hochzuladen und es nach dem Absenden des Formulars in einer separaten Seite "Ergebnis" anzuzeigen.uploaded Bild wird nicht angezeigt, bis ich die Seite aktualisieren Spring Mvc

Das Problem ist, das Bild wird nicht angezeigt, bis ich Ressourcen-Ordner "Ressourcen/statische/Bilder" in Spring Tool Suite aktualisieren und aktualisieren Sie die Seite. I Eclipse-Workspace-Optionen modifiziert automatisch neu geladen und die ide Teil gelöst, sondern müssen noch die Ergebnisseite aktualisieren das Bild

angezeigt

Dies ist der Controller-Code erhalten

@RequestMapping(value = "/save", method = RequestMethod.POST) 
public String contentSubmit(@Valid @ModelAttribute ContentEntity cm, BindingResult result, 
     @RequestParam("file") MultipartFile file, Model model) { 
    if (!file.isEmpty()) { 
     try { 
      cm.setImgUrl(file.getOriginalFilename()); 
      byte[] bytes = file.getBytes(); 
      BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(new File("src/main/resources/static/images/"+cm.getImgUrl()))); 
      stream.write(bytes); 
      stream.close(); 
     } catch (Exception e) { 
      //return error page 
     } 
    } 

    if (result.hasErrors()) { 
     return "cms"; 
    } 

    contentDao.addContent(cm); 
    return "view"; 
} 

und dies ist der Ansicht Code

<img th:src="@{'images/'+${contentEntity.imgUrl}}" class="image-responsive thumbnail" /> 
+3

Der Server liefert keine Bilder von 'src/main/resources /'. Es bedient sie von einer Webanwendung, die aus diesem Verzeichnis (und anderen) erstellt wurde. Betrachten Sie die Webanwendung als eine große WAR-Datei, die Sie zur Laufzeit nicht ändern können (weil das genau so sein sollte). Betrachten Sie die hochgeladenen Bilder als Daten, die irgendwo auf dem Produktions-Webserver oder in einer Datenbank gespeichert sind **, da sie das sind. Sie benötigen ein Servlet oder einen Controller, der eine Image-ID erstellt, die entsprechende Datei oder den Datenbank-Blob liest und die Daten mit dem entsprechenden Inhaltstyp an den Browser zurücksendet. –

Antwort

3

Sie erstellen pragmatisch eine Ressource (Bilddatei) im Verzeichnis "src/resources/...". Es sieht jedoch so aus, als ob Ihr Server Bilder aus einem anderen Verzeichnis erstellt (zB target/** oder bin/**). Wenn Sie also das Ressourcenverzeichnis aktualisieren, erkennt STS, dass die neue Datei neu erstellt wurde, und kopiert dann die Datei in das Zielverzeichnis.

Es gibt eine Option in Eclipse "Native Hooks oder Polling", die ständig die Ressourcen für Änderungen überwachen (obwohl die extern zu STS/Eclipse gemacht werden). Sobald die Änderungen erkannt werden, werden die Ressourcen automatisch aktualisiert.

Sie können diese Option über festlegen möchten: Einstellungen> Allgemein> Workspaces> "Refresh mit nativen Haken oder Polling"

enter image description here

Hoffnung, das hilft.

Verwandte Themen