Я пытаюсь использовать байтовый массив (как BLOB, сохраненный в БД), чтобы вернуть StreamedContent в 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 отправляет запрос в БД. Я напечатал размер полученного изображения в байтах и увидел, что все в порядке, но изображение не отображается ...
Другое дело, что элемент (сущность пользователя) не может достичь изображения в БД из-за ограничений в дизайне.
Спасибо ...