我有一個從數據庫加載的圖像,作爲byte[]
。 有沒有人有一個Bean的例子,如何將它變成StreamedContent
對象,並在<p:graphicImage value="#{bean.image}"/>
中使用它?將字節數組裝入p:graphicImages
謝謝。
我有一個從數據庫加載的圖像,作爲byte[]
。 有沒有人有一個Bean的例子,如何將它變成StreamedContent
對象,並在<p:graphicImage value="#{bean.image}"/>
中使用它?將字節數組裝入p:graphicImages
謝謝。
@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
元素
首先對,你應該對服務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);
}
}
}
感謝您的回答。我讀過你之前建議的答案,但不幸的是它對我沒有任何作用(實際上這個omnifaces有效,但之後我又遇到了一些其他問題,所以我回頭了)。 – Eduardo
感謝明確和客觀的方式回答。我有一種感覺,我之前做過,顯然不是。 – Eduardo