Ich weiß, dass für JSF, um ein Bild anzuzeigen, der Pfad vom Web-/Anwendungsserverstamm sein muss, nicht vom Systemstamm. Also kein absoluter Pfad. Aber hier ist mein Problem. Da ich dem Benutzer erlauben werde, eigene Bilder hochzuladen und sie später anzuzeigen, muss ich die Bilder irgendwo speichern. Wenn ich das Bild jedoch in meinem Projekt abspeichere, werden durch das erneute Projizieren des Projekts möglicherweise meine Bilder gelöscht. Daher denke ich, dass es am besten ist, in einen Ordner hochzuladen, der nicht von einer zukünftigen Wiederverwendung betroffen ist. Aber dann würde mir h: graphicImage oder p: graphicImage den absoluten Pfad nicht erlauben. Was sind meine Möglichkeiten, um dieses Problem zu lösen?JSF Bild und absoluter Pfad
Ich weiß, das gib mir den Weg zu meinem Projekt-Krieg
ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
String path = servletContext.getRealPath("");
Gibt es einen Weg, um mich auf die Web-/Anwendungs Wurzel zu bekommen?
Primefaces 2.2-RC2
Glassfish 3.0.1
Mojarra 2.0.3 Java EE 6
EDIT
Nach ein wenig Forschung, ich lerne die PrimeFaces erlauben Sie zu streamen der Inhalt des Bildes mit FileInputStream
, und Sie können FileInputStream
mit absoluten Pfad. Dies kann eine gute Lösung sein, bis ich getestet habe und herausfinden, dass dies nur auf RequestScoped und SessionScoped Bean funktionieren kann, aber nicht ViewScoped.
Hier ist der Link, den ich posten, um ihre Entwickler über diese Hauptfehler zu benachrichtigen. http://primefaces.prime.com.tr/forum/viewtopic.php?f=3&t=7052
Irgendeine andere Idee?
Den obigen Link enthält eine Lösung für mich. Hör zu. –