【问题标题】:PrimeFaces PollPrimeFaces 民意调查
【发布时间】:2014-06-12 14:54:13
【问题描述】:

我尝试制作一个放置时钟的网站。不是默认的 primefaces 时钟,因为我需要实际时间而不仅仅是显示它。我使用 Netbeans8.0、Java8.0、Primefaces5.0,并且正在构建一个移动网站。

所以我尝试了 p:poll 但它对我不起作用。

@ViewScoped
@ManagedBean(name = "navigationTo")
public class NavigationTo implements Serializable{

    private int number;

    public int getNumber() {
        return number;
    }

    public void increment() {
        number++;
    }
}

<h:body>
        <pm:page id="index">
            <pm:header title="xyz"></pm:header>
            <pm:content>
                <h:form>
                    <p:growl id="growl" showDetail="true"/>
                    <h:outputText id="txt_count" value="#{navigationTo.number}" />
                    <p:poll interval="3" listener="#{navigationTo.increment}" update="txt_count" />
                    <p:graphicImage value="xyz.png" style="width: 30%;

我使用这个默认的 primefaces 示例,但只显示 0 并且不递增...

有人知道吗?

!!!编辑:Primefaces Mobile(此处:pm)不支持轮询。所以它只适用于基本的素面。

【问题讨论】:

  • 您是否尝试过 PrimeFaces 展示中的简单示例? primefaces.org/showcase/ui/ajax/poll.xhtml 您也可以查看浏览器中的 JavaScript 控制台并检查是否有任何错误。最后我会在你的监听器方法中设置一个断点或 println 来查看它是否被正确触发。

标签: java ajax mobile primefaces


【解决方案1】:

好吧,我看看你的情况,我做了一个例子,它对我有用!

我已经创建了一个类似于你的 bean 的 Bean。

    @ViewScoped
    @ManagedBean(name="clockBean")
   public class clockBean implements Serializable{

        private  int number;

        public void increment(){
           number++;
        }

        public int getNumber() {
          return number;
        }

        public void setNumber(int number) {
          this.number = number;
        }
}

另外我创建了一个简单的网页

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    xmlns:pe="http://primefaces.org/ui/extensions">
  <ui:composition template="/layout/template.xhtml">
  <ui:define name="body">
   <h:form id="form">
            <p:poll interval="1"
                listener="#{clockBean.increment}" update=":form" />
            <p:outputLabel value="#{clockBean.number}" />
    </h:form>
  </ui:define>
  </ui:composition> 

 </html>

它对我有用,我希望它可以帮助你!。

我认为您的问题是您需要为网页中的不同组件使用 id,例如组件表单,它应该有一个 id。

【讨论】:

  • 对不起,我解决了这个问题。问题是 Primefaces Mobile 不支持轮询。顺便说一句,您的答案正在发挥作用。
【解决方案2】:

添加

<h:outputScript library="primefaces" name="primefaces.js" />

inside h:body 为我解决了。我正在使用 PrimeFaces 5.1.20

【讨论】:

    【解决方案3】:

    对我来说,将此行添加到 &lt;h:body&gt; 有帮助:

    <h:outputScript library="primefaces/poll" name="poll.js" />
    

    【讨论】:

      【解决方案4】:

      您是否调试过实际的 navigationTo.increment 方法,并检查民意调查是否确实进入了内部?

      看来您在投票中缺少属性,如果您想触发后端方法,并在加载页面后立即开始实际投票,请添加以下内容:

      process="@this" autoStart="true"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-23
        • 2013-06-22
        • 1970-01-01
        • 2021-11-15
        相关资源
        最近更新 更多