2016-08-01 52 views
3

因此,我試圖實現的是,只要value屬性無法引用正確的圖像(例如數據庫中沒有上傳圖像/無圖像),就會使用資源庫中的默認圖像。GraphicImage:如果value屬性會返回null,如何使用默認圖片?

只是對其進行可視化:

用戶未提供的個人資料相片,所以bean.icon應該null

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

現在我想的graphicImage的組件顯示默認的替代,在語義上說:

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

是否有可能實現這一目標的一種優雅的方式,或許不使用JavaScript?

回答

3

不通過<o:graphicImage>組件。但是,您可以在Faces#getResourceAsStream()實用程序的幫助下在bean中實現此目的。

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

哇!非常感謝您的快速響應。要嘗試並儘快接受你的答案。 – Snu

+0

@BalusC我如何在primefaces中做同樣的事情?上面提到的面孔在omnifaces util包中 – dirai

+0

@BalusC Plz也可以看看這個https://stackoverflow.com/questions/48860434/why-file-exists-does-not-work。我試圖實現類似的事情,其中​​我檢查是否存在文件(圖像文件,具體但問題的一般化)存在,然後我會執行進一步的行動。然而正如在該問題的評論中指出的那樣,該文件存在於vfs(運行web應用程序的服務器的部署文件夾)中,因此始終返回false。任何幫助都會很棒。謝謝 – dirai