2010-07-12 134 views
1

我使用primefaces库,这是我的jsp页面来源:primefaces调查标签不起作用

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

我的页面正确加载,但没有正式更新

当它被加载它说“雅虎没有定义”,所以它不起作用。

我已经定义了资源servlet,但它不工作!

请帮帮我!

回答

3

你显然在JSF 2.0上使用PrimeFaces 2.0。在JSF 2.0中,p:resources已弃用。您应该使用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代码无法找到雅虎库引用,因此你检索到的JS错误。如果您右键单击浏览器中的网页并检查生成的HTML源代码,则应该注意到缺少<script>也包含在内。

为了解决这个问题,转储 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的