2010-05-25 25 views
1

我有下一个代码来加载一组图像,这些图像的流在名为datamodel的图像中。我的问题是,当我在p:datatable标签内声明var看起来像什么都没有。任何想法? thx!使用primefaces加载一组图像

<p:dataTable value="#{controlador.names}" var="nombre" rendered="true"> 
       <p:column rendered="true"> 
        <h:outputText value="#{nombre.stream}"/> 
        <p:graphicImage value="#{nombre.stream}"/> 
       </p:column> 
      </p:dataTable> 

回答

0

删除<h:outputText>。您只能阅读一次。它不能再被重新读取。

至于p:graphicImage部分,您需要输入它的值为DefaultStreamedContent。另见this blog entry

+0

它仍然没有工作=( – RhigoHR 2010-05-25 15:49:54

+0

没有必要任何lib ?,我的意思是,defaultStreamedContent到达标记,但问题并没有消失 – RhigoHR 2010-05-25 15:54:23

1

p:graphicImage使用另一个请求,因此您需要像这样将标识符传递给managedBean。

<p:dataTable value="#{productManaged.products}" var="productIterated"> 
    <p:column> 
      <f:facet name="header"> 
       <h:outputText value="#{product.pic}"/> 
      </f:facet> 
      <p:graphicImage value="#{productManaged.dynamicProductImage}"> 
       <f:param name="product_id" value="#{productIterated.id}"/> 
      </p:graphicImage> 
    </p:column> 
</p:dataTable> 

你应该注意的另一件事是在StreamedContent中返回一些东西或者会失败。做这样的事情:

public StreamedContent getDynamicProductImage() { 
     String id = FacesContext.getCurrentInstance() 
         .getExternalContext().getRequestParameterMap().get("product_id"); 
     if(id!=null && this.products!=null && !this.products.isEmpty()){ 
      Integer productId = Integer.parseInt(id); 
      for(Product productTemp:this.products){ 
       if(productTemp.getId().equals(productId)){ 
        return new DefaultStreamedContent(
         new ByteArrayInputStream(productTemp.getImage()),        
          productTemp.getMimeType()); 
       } 
      } 
     } 
     return new DefaultStreamedContent(
         new ByteArrayInputStream(this.products.get(0).getImage()), 
          this.products.get(0).getMimeType()); //if you return null here then it won't work!!! You have to return something. 
} 

,或者你可以阅读这个线程http://primefaces.prime.com.tr/forum/viewtopic.php?f=3&t=4163

1

浪费的去实现很多的解决方案,我发现这个问题的过程中小时后(即包括设置了一个param或属性),我设法找到的唯一解决方案实际上可以在这里找到:Serving Dynamic Content with PrettyFaces

+2

防止堆栈溢出成为一组链接s到其他网站,如果你能简单地总结一下你找到的解决方案,那就太好了。 – daramarak 2012-02-10 08:08:09

相关问题