【问题标题】:Error in streaming dynamic resource. Using p:graphicImage with Primefaces流式传输动态资源时出错。将 p:graphicImage 与 Primefaces 一起使用
【发布时间】:2012-08-17 18:52:29
【问题描述】:

我正在尝试使用 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));
    }
}

我总是收到“严重:流式动态资源错误”的错误。

检查图片的 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 的作用域是什么?

标签: jsf primefaces


【解决方案1】:

应该是SessionScoped。由于在页面处理过程中会多次调用方法getContestImage(),因此最好只创建一次流。

【讨论】:

    猜你喜欢
    • 2014-07-15
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多