2016-08-01 23 views
3

Also was ich versuche zu erreichen ist, dass mein Standardbild aus der Ressourcenbibliothek verwendet wird, wenn das Wertattribut nicht auf ein richtiges Bild verweisen konnte (z. B. kein hochgeladenes Bild/kein Bild in der Datenbank).GraphicImage: Wie verwendet man ein Standardbild, wenn das Wertattribut null zurückgibt?

einfach es sichtbar zu machen:

Der Benutzer ein Profilbild nicht zur Verfügung gestellt hat, so sollte bean.iconnull sein.

<o:graphicImage value="#{bean.icon}" dataURI="true" /> (null isn't allowed as return value) 

Nun mag ich die graphicImage Komponente den Standard statt angezeigt werden, semantisch gesprochen:

<o:graphicImage name="img/default.png" dataURI="true" /> 

Ist es möglich, dies auf elegante Weise zu erreichen, vielleicht ohne die Verwendung von JavaScript?

Antwort

3

Nicht über <o:graphicImage> Komponente. Sie können dies jedoch in der Bean mit Hilfe von Faces#getResourceAsStream() Dienstprogramm erreichen.

public InputStream getIcon() { 
    InputStream input = yourIconService.getIconAsInputStreamSomehow(); 
    return (input != null) ? input : Faces.getResourceAsStream("/resources/img/default.png"); 
} 
+0

Wow! Vielen Dank für die schnelle Antwort. Probieren Sie es aus und akzeptieren Sie Ihre Antwort so schnell wie möglich. – Snu

+0

@BalusC Wie kann ich das gleiche in den Hauptgesichtern machen? Faces oben genannten ist in den omnifaces util Paket – dirai

+0

@BalusC Plz auch einen Blick auf diese https://stackoverflow.com/questions/48860434/why-file-exists-does-not-work. Ich versuche, eine ähnliche Sache zu erreichen, in der ich überprüfe, ob die Datei (Bilddatei, um spezifisch zu sein, aber für den Fragebeitrag verallgemeinert wird) dann ich mache weitere Handlung. Wie in Kommentaren zu dieser Frage angegeben, existiert die Datei jedoch in einem vfs (dem Deployment-Ordner des Servers, auf dem die Webanwendung läuft) und gibt daher immer false zurück. Jede Hilfe wäre großartig. Vielen Dank – dirai