2012-08-17 28 views
7

Tôi đang cố gắng để tự động hiển thị một hình ảnh trong primefaces sử dụng p: thẻ graphicImage như sau:Lỗi khi phát trực tuyến tài nguyên động. Sử dụng p: graphicImage với Primefaces

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

bean được quản lý như sau:

@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)); 
    } 
} 

tôi 'm luôn nhận được lỗi "SEVERE: Lỗi trong tài nguyên động trực tuyến".

Kiểm tra URL cho hình ảnh dường như chỉ tốt:

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

Bất cứ ý tưởng tại sao điều này là gì?

Cảm ơn!

+0

Phạm vi của hạt được quản lý của bạn là bao nhiêu? – wrschneider

+0

Yêu cầu Scoped. – Graeme

Trả lời

6

Nên là SessionScoped. Vì phương thức getContestImage() được gọi nhiều lần trong quá trình xử lý trang, nên tốt hơn là chỉ tạo luồng một lần.

Các vấn đề liên quan