2011-08-09 23 views
1

我試圖使用字節數組(作爲BLOB保存在數據庫中)將streamedContent返回到p:graphicImage,即在ap:datagrid中,如下所示: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使得查詢到DB。我以字節爲單位打印了結果圖像的大小,並且看到它是確定的,但仍然沒有顯示圖像... 另一件事是由於限制條目(用戶實體)無法到達數據庫中的圖像在設計中。

謝謝...

回答

1

binding屬性在這種特定情況下不給我你使用它,正確的方式感覺良好。去掉它。 value屬性也似乎沒有指向UIData的迭代變量#{item}

相應地修復它。

<p:graphicImage width="100" height="100" value="#{item.image}"> 

Item類應該再有一個private StreamedContent image財產,吸氣劑。

如果這不是Item課程中的某些設計限制的選項,那麼您確實必須展示您的#{imagestickiesController}代碼,因爲它絕對是罪魁禍首。

+0

我會檢查迭代的項目和設計限制,我會很快回來的結果... – lionheart

+0

我已經編輯了問題,並在檢查限制並找出該項目無法獲取圖像後把imagestickiesController ... – lionheart

+0

據說,如果我使用鏈接文件圖像而不是StreamedContent - 它的工作原理...但我不希望處理文件鏈接,因爲我的解決方案不考慮處理文件系統...有沒有任何可能的方法使用StreamedContent處理圖像? – lionheart