【问题标题】:Ajax poll does not work in my projectAjax 投票在我的项目中不起作用
【发布时间】:2014-10-07 18:09:39
【问题描述】:

首先,我很抱歉我的英语不好。 我是 JSF 的新手,所以我确信这是一个非常愚蠢的问题,但我找不到任何可以帮助我的帖子。我在我的项目中使用 ajax poll,因为我需要在页面中刷新组件。我在 primefaces 5 展示中创建了一个示例。在此示例中,有一个计数器每 3 秒递增一次。我以完全相同的方式使用示例的代码,但计数器从不增加。我认为这可能是我在项目中使用的错误配置。此外,它在 Eclipse 控制台中显示了下一条消息(我不知道这是否与我的问题有关):

信息:未定义状态保存方法,假设为默认服务器 状态保存

这是我的源代码:

<!DOCTYPE HTML>
<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:p="http://primefaces.org/ui">


<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"></meta>
<title>Insert title here</title>

</h:head>
<h:body>
   <h:form>
      <h:outputText id="txt_count" value="#{globalCounterView.count}"/>
      <p:poll interval="3" listener="#{globalCounterView.increment}" update="txt_count"/>
   </h:form>
</h:body>
</html>

在 bean 中:

import java.io.Serializable;

import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.event.ActionEvent;

@ManagedBean
@ApplicationScoped
public class GlobalCounterView implements Serializable{

    /**
    * 
    */
   private static final long serialVersionUID = 1L;
   private int count;

    public int getCount() {
        return count;
    }


    public void increment(ActionEvent actionEvent) {
        count++;
    }

    public void setCount(int count) {
       this.count = count;
       } 
}

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>SAEGraph</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

最后,我想做的是定期从支持 bean 更新 primeface 组件。另外,你能告诉我是否存在不使用民意调查的其他方法吗???? 再次感谢并为糟糕的英语感到抱歉。

我正在使用 primefaces 5.0、Tomcat 7、Eclipse 版本:4、JDK 7

【问题讨论】:

    标签: ajax jsf primefaces


    【解决方案1】:

    只需删除 increment 方法中的参数即可。

    public void increment(ActionEvent actionEvent) {
        count++;
    }
    

    到:

    public void increment() {
        count++;
    }
    

    【讨论】:

    • 非常感谢,在我做了很多改变之后,我把那些失败的论点放在了没有注意到
    猜你喜欢
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多