PrimeFaces 5.1没有正确包含在内

时间:2014-11-18 17:07:45

标签: java jsf java-ee primefaces wildfly

我正在尝试在我的JSF应用程序中利用PrimeFaces 5.1。该应用程序部署为EAR文件,包含1个WAR模块和多个EJB模块。整个事情是使用Maven构建的,并部署在Wildfly 8.1上。

我在我的根级别pom.xml中包含了PrimeFaces依赖项,如下所示:

<dependency>
                <groupId>org.primefaces</groupId>
                <artifactId>primefaces</artifactId>
                <version>${version.primefaces}</version>
            </dependency>

...在我的WAR pom.xml中,我已经将它声明为依赖:

<dependency>
            <groupId>org.primefaces</groupId>
            <artifactId>primefaces</artifactId>
        </dependency>

当我使用Maven构建EAR时,我可以看到primefaces-5.1.jar文件按照预期包含在/WEB-INF/lib中的WAR模块下。这似乎很有效。

我的JSF页面中有一个简单的<p:messages />标记,通过动作类设置了JSF FacesMessage。但是,当我访问页面本身时,我看不到呈现<p:messages />组件。相反,如果我查看来源,我 实际上会看到 "<p:messages ... />"。也就是说,我看到了该标记的JSF源代码,而不是渲染的组件。

我在这样的JSF文件中声明PrimeFaces ......

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui">
<h:head>
...

...当我查看呈现的JSF页面的来源时,我看到了文本"<html xmlns:p="http://primefaces.org/ui">"

在我看来,渲染的PrimeFaces没有被初始化或被正确调用。我按照PrimeFaces网站上的指示来指示如何开始使用该库,但是我的项目结构错误或者我错过了一步。

知道我的PrimeFaces JSF库没有被正确包含和使用的原因吗?

编辑:我对Faces Servlet的web.xml声明如下所示:

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/javax.faces.resource/*</url-pattern>
    </servlet-mapping>
...

1 个答案:

答案 0 :(得分:0)

原来这是Eclipse如何将我的项目的EAR文件部署到应用服务器的问题。 WAR项目未设置为在部署程序集中包含Maven依赖项。一旦我做出了这个改变,它按预期部署,Primefaces没有问题。