тэг опроса Primefaces не работает - PullRequest
1 голос
/ 13 июля 2010

Я использую библиотеку primefaces. Это мой источник jsp-страницы:

<%@taglib uri="http://primefaces.prime.com.tr/ui" prefix="p"%>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<f:view>
<head>
  <p:resources />
  <base href="<%=basePath%>">

  <title>My JSP 'index.jsp' starting page</title>
</head>

<body>

   <h:form>
    <h:outputText id="txt_count" value="#{counterBean.count}" />
    <p:poll actionListener="#{counterBean.increment}" update="txt_count" />
   </h:form>

</body>

  </f:view>
</html>

, а код моего бина:

import javax.faces.event.ActionEvent;


public class CounterBean {
private int count;
public void increment(ActionEvent actionEvent) {
count++;
}
//getters and setters
public int getCount() {
 return count;
}
public void setCount(int count) {
 this.count = count;
}
}

мой web.xml выглядит следующим образом

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
  </servlet-mapping>
  <servlet>
<servlet-name>Resource Servlet</servlet-name>
<servlet-class>org.primefaces.resource.ResourceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Resource Servlet</servlet-name>
<url-pattern>/primefaces_resource/*</url-pattern>
</servlet-mapping>
  <welcome-file-list>
    <welcome-file>test.jsp</welcome-file>
  </welcome-file-list>
</web-app>

мои страницы загружаются правильно, но они не обновляются регулярно

при загрузке он говорит, что "Yahoo не определен", и поэтому он не работает.

я определилресурсы и сервлет но он пока не работает!

пожалуйста, помогите мне!

1 Ответ

3 голосов
/ 13 июля 2010

Вы явно используете PrimeFaces 2.0 на JSF 2.0. p:resources является устаревшим в JSF 2.0. Вы должны использовать Facelets вместо JSP. Если что-то пошло не так, вы должны были увидеть следующую запись в журналах сервера:

INFO: p:resources component is deprecated and has no use in PrimeFaces 2.0 as
      JSF 2.0 resource apis are used instead to place resources on page.

Поскольку ресурсы не включены в страницу, необходимые файлы JavaScript не включены, и сгенерированный код JavaScript не может найти ссылку на библиотеку Yahoo, поэтому вы получили ошибку JS. Если вы щелкнули правой кнопкой мыши веб-страницу в браузере и проверили сгенерированный исходный код HTML, вы должны были заметить также отсутствие <script> include.

Чтобы это исправить, dump JSP навсегда и используйте Facelets. Он является преемником JSP и намного лучше, когда снимает JSF.

Переименуйте файл *.jsp в *.xhtml и используйте следующий код:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.prime.com.tr/ui">
    <h:head>
        <title>My Facelets 'index.xhtml' starting page</title>
        <base href="//#{request.serverName}:#{request.serverPort}#{request.contextPath}"></base>
    </h:head>
    <h:body>
       <h:form>
           <h:outputText id="txt_count" value="#{counterBean.count}" />
           <p:poll actionListener="#{counterBean.increment}" update="txt_count" />
       </h:form>
    </h:body>
</html>

При чтении книг / учебников JSF убедитесь, что вы читаете книги, охватывающие JSF 2.0, а не 1.x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...