2

这是我使用 primefaces 4.0 通信版本的 firefox 问题: p:graphicImage 我有一个模型列表,每当我单击 1 个项目时,我想分别在 xhtml 文件中获取 1 个图像

<p:fieldset id="modelDiagramView" style="width:100%;height:1280px">
    <p:panel id="panel">
        <p:graphicImage value="#{modelBean.modelImage}" style="width: 100%;" cache="false"/>
    </p:panel>
</p:fieldset>

在java bean中,只有会话范围和应用程序范围运行良好

public StreamedContent getModelImage() {
        FacesContext context = FacesContext.getCurrentInstance();

        if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {
            System.out.println("render_response: id=" + modelID);
            // So, we're rendering the HTML. Return a stub StreamedContent so
            // that it will generate right URL.
            // modelImage = new DefaultStreamedContent();
            if (modelID != null)
                getModelImage(modelID);
        } else {
            System.out.println("real reander: id=" + modelID);
            if (modelID != null)
                getModelImage(modelID);
        }
        return modelImage;
    }

在 chrome 中,当我单击列表中的项目时,p:graphicImage 将呈现一个新图像,但是在 Firefox 中,只会呈现第一个项目的图像,如果我想显示下一个单击的项目,我必须刷新浏览器( F5)。它是primefaces错误,我该如何防止这个问题?请帮我

4

1 回答 1

1

如果不更改 URL,浏览器不会使用 ajax 刷新图像只是一个“错误”。因此,您应该向资源 url 添加一个随机数,如下例所示。

xhtml

<p:graphicImage value="#{bean.stream}" id="pic" width="200">
   <f:param name="randomNumber" value="#{beanxxx.randomNumber}"/>
</p:graphicImage>

豆xxx

public String getRandomNumber() {
    Random r = new Random();
    int low = 10;
    int high = 100;
    int result = r.nextInt(high-low) + low;

    return Integer.toString(result);
}

在此处输入图像描述

于 2016-05-18T08:42:52.593 回答