2012-08-17 19 views
7

我試圖使用p動態顯示primefaces圖像:如下graphicImage的標籤:流式動態資源出錯。使用號碼:graphicImage的使用Primefaces

<p:graphicImage value="#{submissionBean.contestImage}"> 
    <f:param name="imageName" 
     value="#{contestBean.createContest.submissions[0].fileName}" /> 
</p:graphicImage>` 

管理bean如下:

@ManagedProperty("#{param.imageName}") 
private String imageName; 

public String getImageName() 
{ 
    return imageName; 
} 

public void setImageName(String imageName) 
{ 
    this.imageName = imageName; 
} 

private StreamedContent contestImage; 

public StreamedContent getContestImage() 
{ 
    FacesContext context = FacesContext.getCurrentInstance(); 
    if (imageName == null) 
     imageName = Constants.SUBMISSION_FILE_DIR + "/" + "sacxzx_asdsdaas_icon.png"; 
    if (context.getRenderResponse()) 
    { 
     // So, we're rendering the view. Return a stub StreamedContent so 
     // that it will generate right URL. 
     return new DefaultStreamedContent(); 
    } 
    else 
    { 

     return new DefaultStreamedContent(this.getClass().getResourceAsStream(Constants.SUBMISSION_FILE_DIR + "/" + imageName)); 
    } 
} 

我總是得到「SEVERE:流式動態資源出錯」的錯誤。

檢查圖像的URL似乎就好了:

http://localhost:8080/mashup/javax.faces.resource/dynamiccontent.xhtml?ln=primefaces&pfdrid=pfdrid_4290aa0c-8eef-45ea-a281-638e460e33bf&imageName=sacxzx_asdsdaas_icon.png 

任何想法,這是爲什麼?

謝謝!

+0

您的託管bean的範圍是什麼? – wrschneider 2012-08-17 18:55:13

+0

請求作用域。 – Graeme 2012-08-17 20:09:18

回答

6

應該是SessionScoped。由於方法getContestImage()在頁面處理期間被多次調用,所以最好只創建一次流。