流式动态资源出现错误。使用Primefaces的p:graphicImage。

7
我想要使用p: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

有什么想法吗?谢谢!

你的托管bean的作用域是什么? - wrschneider
1个回答

7

应该使用 SessionScoped。因为方法 getContestImage() 在页面处理过程中被多次调用,所以最好只创建一次流。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接