У меня есть несколько изображений в базе данных, сохраненных как String, и я хочу зациклить их и просматривать их динамически с использованием простых лиц.
Вывод: иногда показывать одно изображение, два или ничего. И я использовал все области (сеанс, просмотр, запрос), результат один и тот же.
вот код, который я использовал для преобразования строки в потоковое содержимое:
private StreamedContent getImageFromString(String imageData) throws IOException {
byte[] imageByte = null;
BufferedImage imageBuffer = null;
imageByte = byteToString(imageData);
ByteArrayInputStream in = new ByteArrayInputStream(imageByte);
imageBuffer = ImageIO.read(in);
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(imageBuffer, "png", os);
return new DefaultStreamedContent(new ByteArrayInputStream(os.toByteArray()), "image/png");
}
public byte[] byteToString(String imageStr) {
return Base64.decodeBase64(imageStr);
}
и дизайн jsf:
<ui:repeat value="#{recent.recentlist}" var="recent" >
<h:outputText value="#{recent.Id}"/>
<br/>
<p:graphicImage value="#{recent.graphicImage}">
<f:param name="image_id" value="#{recent.Id}"/>
</p:graphicImage>
<br/><br/>
<p:separator/>
</ui:repeat>
результат все время (SEVERE: ошибка в потоковом динамическом ресурсе)