1
我試圖使用字節數組(作爲BLOB保存在數據庫中)將streamedContent返回到p:graphicImage,即在ap:datagrid中,如下所示:p:graphicImage裏面p:dataGrid只顯示空白圖像
<p:dataGrid id="dtResults" rows="10" columns="3"
value="#{searchResultsController.items}" var="item">
<p:column>
<p:panel header="#{item.displayName}" style="text-align:center">
<h:panelGrid columns="1" style="width:100%">
<p:graphicImage binding="#{imagestickiesController.imageforuserid}"
width="100" height="100" value="#{imagestickiesController.image}">
<f:attribute name="uID" value="#{item.userID}" />
</p:graphicImage>
<h:outputText id="lAboutMe" value="#{item.aboutMe}"/>
</h:panelGrid>
</p:panel>
</p:column>
</p:dataGrid>
此人返回空白圖像。有人知道爲什麼嗎?
新增: 在這方面ImagestickiesController的部分是:
public class ImagestickiesController {
private GraphicImage imageforuserid;
public GraphicImage getImageforuserid(){
return imageforuserid;
}
public void setImageforuserid(GraphicImage gi){
imageforuserid = gi;
}
public StreamedContent getImage(){
System.out.println("In getImage");
System.out.println(imageforuserid);
System.out.println(imageforuserid.getAttributes().get("uID"));
Long value = (Long)imageforuserid.getAttributes().get("uID");
if (value!=null)
{
Imagestickies curr = ejbFacade.FindByUserID(value);
if (curr!=null)
{
System.out.println(curr);
InputStream is = new ByteArrayInputStream(curr.getStickies().getContent());
StreamedContent res = new DefaultStreamedContent(is);
return res;
}
}
return null;
}
}
的ejbFacade使得查詢到DB。我以字節爲單位打印了結果圖像的大小,並且看到它是確定的,但仍然沒有顯示圖像... 另一件事是由於限制條目(用戶實體)無法到達數據庫中的圖像在設計中。
謝謝...
我會檢查迭代的項目和設計限制,我會很快回來的結果... – lionheart
我已經編輯了問題,並在檢查限制並找出該項目無法獲取圖像後把imagestickiesController ... – lionheart
據說,如果我使用鏈接文件圖像而不是StreamedContent - 它的工作原理...但我不希望處理文件鏈接,因爲我的解決方案不考慮處理文件系統...有沒有任何可能的方法使用StreamedContent處理圖像? – lionheart