Gon*_*gui 32 jsf dynamic-content primefaces uirepeat graphicimage
我在JBoss 7.1.1上使用PrimeFaces 3.2.
我试图在MySQL数据库中显示存储在BLOB中的图像<ui:repeat>
.图像存储在a中byte[]
,然后转换StreamedContent
为如下:
InputStream stream = new ByteArrayInputStream(ingredient.getImage());
ingredient.setJsfImage(new DefaultStreamedContent(stream, "image/jpg"));
Run Code Online (Sandbox Code Playgroud)
然后我试图在Facelet中显示它如下:
<ui:repeat var="ingredient" value="#{formBean.ingredientResultSet}">
<p:panel id="resultsPanel" header="#{ingredient.location.shopName}">
<p:graphicImage value="#{ingredient.jsfImage}" alt="No picture set" />
...
Run Code Online (Sandbox Code Playgroud)
但是,在加载页面时,我在JBoss中收到以下错误:
SEVERE [org.primefaces.application.PrimeResourceHandler](http - 127.0.0.1-8080-12)流式动态资源出错.
这是怎么造成的,我该如何解决?
Bal*_*usC 54
您需要意识到<p:graphicImage>
实际上<img src>
只使用一个URL 呈现一个元素,然后当它要解析获得的HTML标记并显示结果时,Web浏览器随后会单独调用该URL.
因此,无论你在getter方法中做什么,都<p:graphicImage>
必须按照每个请求调用它的方式进行设计.因此,最理智的方法是创建一个<p:graphicImage>
a,<f:param>
其中<p:graphicImage value>
points指向一个完全独立的请求或应用程序作用域bean,并<f:param value>
指向唯一的图像标识符.
例如
<p:graphicImage value="#{images.image}">
<f:param name="id" value="#{someBean.imageId}" />
</p:graphicImage>
Run Code Online (Sandbox Code Playgroud)
凡Images
支持bean可以是这样的:
@ManagedBean
@ApplicationScoped
public class Images {
@EJB
private ImageService service;
public StreamedContent getImage() throws IOException {
FacesContext context = FacesContext.getCurrentInstance();
if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {
// So, we're rendering the view. Return a stub StreamedContent so that it will generate right URL.
return new DefaultStreamedContent();
}
else {
// So, browser is requesting the image. Return a real StreamedContent with the image bytes.
String id = context.getExternalContext().getRequestParameterMap().get("id");
Image image = service.find(Long.valueOf(id));
return new DefaultStreamedContent(new ByteArrayInputStream(image.getBytes()));
}
}
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您已经在使用OmniFaces 2.0或更新版本,那么请考虑使用它<o:graphicImage>
,它可以更直观地使用,几乎可以按照您的预期方式使用.另请参阅有关该主题的博客.
归档时间: |
|
查看次数: |
53825 次 |
最近记录: |