views:

313

answers:

1

hi all i am using primefaces library this is my jsp page source:

<%@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>

and my back bean code is :

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;
}
}

my web.xml is as follows

<?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"&gt;
  <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>

my pages loads correctly but it's not regulary updated

when it is loaded it says that "yahoo is not defined" and so it does not work.

i have defined resources servlet and but it does not work yet!

please help me!

+1  A: 

You're apparently using PrimeFaces 2.0 on JSF 2.0. The p:resources is deprecated in JSF 2.0. You should be using Facelets instead of JSP. If anything went right, you should have seen the following entry in the server logs:

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.

Because the resources are not included in the page, the required JavaScript files are not included and the generated JavaScript code cannot find the Yahoo library reference, hence the JS error you retrieved. If you have rightclicked the webpage in browser and checked the generated HTML source, you should have noticed the lack of <script> includes as well.

To fix this, dump JSP forever and go use Facelets. It's the successor of JSP and far more superior when taking JSF into picture.

Rename the *.jsp file to *.xhtml and use the following code:

<!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"&gt;
    <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>

When reading JSF books/tutorials ensure that you're reading the ones covering JSF 2.0, not 1.x.

BalusC