以下是我使用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 bug吗,我该如何防止这个问题?请帮帮我
发布于 2016-05-18 16:42:53
这只是一个"bug“,如果URL不改变,浏览器就不会用ajax刷新图像。因此,您应该向资源url添加一个随机数,如下例所示。
xhtml
<p:graphicImage value="#{bean.stream}" id="pic" width="200">
<f:param name="randomNumber" value="#{beanxxx.randomNumber}"/>
</p:graphicImage>beanxxx
public String getRandomNumber() {
Random r = new Random();
int low = 10;
int high = 100;
int result = r.nextInt(high-low) + low;
return Integer.toString(result);
}

https://stackoverflow.com/questions/21498124
复制相似问题