2012-08-17 57 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()在页面处理期间被多次调用,所以最好只创建一次流。