Jsf 2 如何使用javascript刷新图像

Jsf 2 如何使用javascript刷新图像,jsf-2,primefaces,Jsf 2,Primefaces,使用primefaces fileupload,我试图在上载组件上方的img标记中显示最近上载的图像,但只有在我手动按F5或在浏览器上按enter键后,它才会显示,我尝试了location.reload()和histry.go(0),但图像未加载 <img height="100" src="relativepath/productId"/> <p:fileUpload oncomplete="history.go(0)" fileUploadListener="

使用primefaces fileupload,我试图在上载组件上方的img标记中显示最近上载的图像,但只有在我手动按F5或在浏览器上按enter键后,它才会显示,我尝试了location.reload()和histry.go(0),但图像未加载

<img  height="100"     src="relativepath/productId"/>
<p:fileUpload oncomplete="history.go(0)"   fileUploadListener="#{productController.upload}" mode="advanced"    
dragDropSupport="false" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />

以下代码每1秒加载一次图像。。。希望我能帮忙

<div id="wraper">
</div>
<style>
    var t=setInterval(runFunction,1000);
    function runFunction() {
        document.getElementById("p1").innerHTML = '<img  height="100"     src="relativepath/productId"/>
        <p:fileUpload oncomplete="history.go(0)"   fileUploadListener="#{productController.upload}" mode="advanced"    
        dragDropSupport="false" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />'
    }
</style>

var t=设置间隔(运行函数,1000);
函数runFunction(){
document.getElementById(“p1”).innerHTML=
'
}

不要局限于javascript。在ajax之后进行更新,在url中使用timestamp参数就可以了

这应该是xhtml代码:

<h:panelGroup id="panelToUpdate">
    <img height="100" src="relativepath/productId?t=#{myManagedBean.currentTimeInMillis}"/>
</h:panelGroup>
<p:fileUpload update="panelToUpdate" fileUploadListener="#{productController.upload}" 
    mode="advanced" dragDropSupport="false" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />

上载完成后,您需要让上载者更改img的
src
,并获得新上载图像的“官方”URL。controller中的上载方法执行该任务,它将在名为productId的相对路径上载图像,但我需要刷新为什么?
历史。go(0)
不一定会执行另一个http请求以查看是否有任何更改。它可以自由使用缓存数据,这意味着无论最初加载的是什么图像,而不是刚刚上载的图像。这不应该起作用
p:fileUpload
是一个在服务器端转换为本机html和javascript的组件。您不能期望它在被javascript函数放置后被呈现。
public long getCurrentTimeInMillis()
{
    return System.currentTimeMillis();
}