primefaces 4.0 p:graphicImage firefox错误 [英] primefaces 4.0 p:graphicImage firefox bug
问题描述
这是我使用primefaces 4.0通信版本的firefox遇到的问题:p:graphicImage 我有一个模型列表,每当我单击1个项目时,我想分别得到1张图像 在xhtml文件中
Here is my problem with firefox using primefaces 4.0 communication version: p:graphicImage I have a list of model, whenever I click 1 item, I would like to get 1 image respectively In xhtml file
<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中,只有会话作用域和应用程序作用域运行良好
in java bean, only session scope and application scope are running well
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,如何预防该问题?请帮助我
In chrome, when I click to item in list, the p:graphicImage will render a new image, however in firefox, only the first item's image will be render, if I want to display the next clicked item, I have to refresh browser(F5). Is it primefaces bug, how can I prevent that problem? Please help me
推荐答案
这只是一个"bug",如果URL不会更改,浏览器不会使用ajax刷新图像.因此,您应该在资源网址中添加一个随机数,如下例所示.
It's just a "bug" that browsers doesn't refresh a image with ajax if the URL will not be changed. Therefore you should add a random number to the resource url as below example.
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);
}
这篇关于primefaces 4.0 p:graphicImage firefox错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!