我正在使用JSF / PF anf我无法使graphicImage工作。回顾在论坛上发布的大量主题,这个PF的graphicImage似乎非常棘手。我显然做错了,但是,只要我复制的代码对其他人起作用(见帖子),它必须是组件环境中的东西。我希望在这里找到解决方案,我已经坚持数周了。感谢
这是我在PF论坛中的原始问题:
我在渲染图像时遇到问题。我已经按照说明的代码进行了操作,并且我正确地检索了要在单独的方法中显示的图像的ID:
public StreamedContent getStreamedImage() {
StreamedContent streamedImage = null;
UIViewRoot uiRoot = FacesContext.getCurrentInstance().getViewRoot();
System.out.println(uiRoot.getClientId());
UIComponent component = FacesContext.getCurrentInstance().getViewRoot().findComponent("itemDataForm:imagesTbl:itemImgComp");
Map attributes = component.getAttributes();
Integer image_id = (Integer)attributes.get("item_img_id");
if(image_id != null && editionItem != null && editionItem.getImages() != null){
for(ItemImageView img : editionItem.getImages()){
if(image_id.intValue() == img.getId()){
streamedImage = new DefaultStreamedContent(new ByteArrayInputStream(img.getImage()), "image/jpeg");
}
}
}else{
streamedImage = new DefaultStreamedContent(new ByteArrayInputStream(editionItem.getImages().get(0).getImage()), "image/jpeg");
}
.......
我无法检索(总是为空),所以我尝试了属性,它的工作原理。因此,DefaultStreamContent被加载,由图像根本不渲染。我的xhtml代码:
<p:dataTable id="imagesTbl" var="itemImg" value="#{itemEditionBean.editionItem.images}">
<p:column>
<h:panelGrid columns="1">
<h:outputText value="#{itemImg.id}"/>
<p:graphicImage id="itemImgComp" value="#{itemEditionBean.streamedImage}">
<f:attribute name="item_img_id" value="#{itemImg.id}"/>
</p:graphicImage>
</h:panelGrid>
</p:column>
</p:dataTable>
与上述主题中的代码完全相同。 PS:我在一个标签中包含了mt dataTable。可能依赖于封闭的组件,形式,还是什么?
可以在以下链接中查看来自其他相关主题的大量代码:
http://forum.primefaces.org/viewtopic.php?f=3&t=4163&p=39751
答案 0 :(得分:2)
根据我在building dynamic images上找到的另一个页面,我应该使用<f:param .../>
为getStreamedImage()
方法而不是<f:attribute .../>
提供参数。您使用的是ConversationScoped支持bean吗?我有同样的problem displaying dynamic images,但发现有一个problem using them with ConversationScoped beans。我将我的支持bean切换到Session范围,现在它可以正常工作。