2016-12-05 33 views
1

我有一個從數據庫加載的圖像,作爲byte[]。 有沒有人有一個Bean的例子,如何將它變成StreamedContent對象,並在<p:graphicImage value="#{bean.image}"/>中使用它?將字節數組裝入p:graphicImages

謝謝。

回答

1
@Named 
public class ImageBean { 
    private StreamedContent image; 
    @PostConstruct 
    public void init() { 
     image = new DefaultStreamedContent(new ByteArrayInputStream(byteArray)); // your byte array 
    } 
    // setter and getter for image omitted 
} 

然後調用#{imageBean.image}在您的XHTML頁面一個p:graphicImage元素

+0

感謝明確和客觀的方式回答。我有一種感覺,我之前做過,顯然不是。 – Eduardo

0

首先對,你應該對服務StreamedContent豆應該如何看起來像一個示例讀this great answer

爲了您的特殊起源,還有一個ByteArrayContent這是進一步可序列化。

要使用

<p:graphicImage value="#{bean.image}" /> 

你的bean必須是這個樣子:

@Named 
@ApplicationScoped 
public class Bean { 

    private byte[] imageLoadedFromDatabase; 

    // code to set (or load) image from database 
    ... 

    public StreamedContent getImage() { 
    if (FacesContext.getCurrentInstance().getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) { 
     return new DefaultStreamedContent(); 
    } else { 
     return new ByteArrayContent(imageLoadedFromDatabase); 
    } 
    } 
} 
+0

感謝您的回答。我讀過你之前建議的答案,但不幸的是它對我沒有任何作用(實際上這個omnifaces有效,但之後我又遇到了一些其他問題,所以我回頭了)。 – Eduardo