如何在Eclipse Indigo SR2中使用PrimeFaces 3.2?

时间:2012-10-18 12:14:43

标签: eclipse jsf-2 primefaces

我正在尝试使用PrimeFaces 3.2。我正在使用Eclipse Indigo SR2。我正在使用PrimeFaces标签创建JSP页面。标准<h:commandButton>正在运行,但<p:commandButton>无效。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f"  uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h"  uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html  xmlns:p="http://primefaces.org/ui">
<head>

</head>
<body>
<f:view>
        <h:form>
        <h:commandButton value="Click"></h:commandButton>
        <p:commandButton value="shfgldjfkl"></p:commandButton>
        </h:form>
</f:view>
</body>
</html>

我的输出是:

enter image description here

当我在Indigo Service Release 2中使用JSF XHTML页面时,我的代码没有运行,我的页面是空白的。

我如何使用PrimeFaces 3.2?

2 个答案:

答案 0 :(得分:2)

自JSF 2.0以来,JSP已被弃用,并由Facelets取代。所有与PrimeFaces&gt; 2.x兼容的JSF 2.0兼容组件库都不再具有JSP的taglib,但仅适用于Facelets。

JSP根本不会识别您放在JSP文件中的<html xmlns:p="http://primefaces.org/ui">。 XML名称空间上的JSF标记库仅在Facelets中起作用。

Forget JSP. Concentrate on Facelets.

回到您的Facelets问题的空白页面,确保您有一个<h:head>而不是<head>(否则JSF / PrimeFaces将无法自动包含必要的CSS / JS文件)并且您的请求URL与FacesServlet中定义的web.xml的URL模式匹配(否则FacesServlet将不会被调用,因此无法将JSF转换为HTML;您已经通过右键单击确认了这一点,在webbrowser中查看源

以下是完整的Facelets代码段/demo.xhtml

<!DOCTYPE html>
<html lang="en"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>PrimeFaces demo</title>
    </h:head>
    <h:body>
        <h:form>
            <p:commandButton value="submit" />
        </h:form>
    </h:body>
</html>

如果FacesServlet位于web.xml的网址格式*.xhtml中,则如下所示:

<servlet>
    <servlet-name>facesServlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>facesServlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

然后您可以通过网址中的相同文件名打开它,而无需摆弄*.jsf/faces/*等虚拟网址:

  

http://localhost:8080/contextname/demo.xhtml

答案 1 :(得分:0)

我觉得你应该亲自使用JSF或facelet我从不尝试用primeface实现JSP,顺便提一下如果你可以在JSF或facelet中实现相同的结果,所以我建议继续使用JSF 2.0