Reputation: 967
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">
<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!
Upvotes: 1
Views: 6616
Reputation: 1108537
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">
<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.
Upvotes: 3