每n秒更新一次p:graphicImage

时间:2014-07-06 04:11:26

标签: jsf-2 primefaces

我想知道是否有人可以解释或指向一个好资源,这将帮助我了解如何在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>

2 个答案:

答案 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个图像之间切换。如果浏览器读取缓存的图像而不是更新的图像,我认为您可以将当前日期附加到网址。

相关问题