我想知道是否有人可以解释或指向一个好资源,这将帮助我了解如何在Primefaces 5.0中更新p:graphicImage。我试图做的很简单。
<p:graphicImage value="myImage.png"/>
文件名永远不会改变,但每隔n秒就会更新一次。我试图找出每n秒更新该图像的最简单方法。在这种情况下,我们每5个人说一次。
tyia
更新: 我已尝试过以下建议,但民意调查并未更新。我已经在IE,FF和Chrome中对此进行了测试。我在主要面孔上使用示例代码。这是我的豆子:
@ManagedBean
@ViewScoped
public class CounterView implements Serializable {
private int number;
public int getNumber() {
return number;
}
public void increment() {
System.out.println("test");
number++;
}
}
我输出到控制台以查看是否执行了increment(),它不是。
这是我的xhtml:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title></title>
</h:head>
<h:body>
<h:form>
<p>Welcome, #{loginBean.uname}</p>
<p:commandButton action="#{loginBean.logout}" value="Logout" ajax="false"></p:commandButton>
<br/>
<h:form>
<h:outputText id="txt_count" value="#{counterView.number}" />
<p:poll interval="3" listener="#{counterView.increment}" update="txt_count" />
</h:form>
</h:form>
</h:body>
</html>
以上是我成功登录后重定向到的页面。所有输出都是正确的,除了txt_count ....它保持为0.我将图像输出以使其工作,然后再将其应用于图像更新。
更新2: 让int counter工作
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title></title>
</h:head>
<h:body>
<h:form>
<p>Welcome, #{loginBean.uname}</p>
<p:commandButton action="#{loginBean.logout}" value="Logout" ajax="false"></p:commandButton>
<br/>
<h:outputText id="txt_count" value="#{counterView.number}" />
<p:poll interval="3" listener="#{counterView.increment}" update="txt_count" />
</h:form>
</h:body>
</html>
答案 0 :(得分:1)
您可以使用带有更改图像的侦听器方法的轮询组件。
<p:poll interval="3" listener="#{your_method_to_change_the_image()}" update="myImage" />
<p:graphicImage id="myImage" value="myImage.png"/>
免责声明:未经测试。
答案 1 :(得分:0)
根据Primefaces用户指南p。 247您可以使用p:imageSwitch进行幻灯片放映。例如:
p:imageSwitch effect="FlyIn">
<p:graphicImage value="/images/nature1.jpg" />
<p:graphicImage value="/images/nature2.jpg" />
<p:graphicImage value="/images/nature3.jpg" />
<p:graphicImage value="/images/nature4.jpg" />
</p:imageSwitch>
您也可以设置速度。如果我理解正确并且您更改了图像服务器,我猜您可以在具有相同网址的2个图像之间切换。如果浏览器读取缓存的图像而不是更新的图像,我认为您可以将当前日期附加到网址。