【问题标题】:PrimeFaces 5.1 not being included properlyPrimeFaces 5.1 未正确包含
【发布时间】:2014-11-18 17:07:45
【问题描述】:

我正在尝试在我的 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 页面中有一个简单的 &lt;p:messages /&gt; 标记,其中 JSF FacesMessage 通过动作类设置。但是,当我访问页面本身时,我看不到 &lt;p:messages /&gt; 组件呈现。相反,如果我查看源代码,我实际上看到了 "&lt;p:messages ... /&gt;"。也就是说,我看到的是该标记的 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 页面的源代码时,我看到了文本 "&lt;html xmlns:p="http://primefaces.org/ui"&gt;"

在我看来,渲染的 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>
...

【问题讨论】:

  • 在你的页面中,你使用&lt;body&gt;还是&lt;h:body&gt;
  • 面对web.xml 中的servlet? This post 有一个例子。
  • 更新了问题以显示我声明 Faces Servlet 的 web.xml 的 sn-p
  • 您要测试的网址是什么?如果在web.xml 中将*.xhtml 替换为*.jsf 并将您的url 更改为http://&lt;context_root&gt;/&lt;your_page&gt;.jsf,这样可以吗?
  • 不。同样的行为。

标签: java jsf jakarta-ee primefaces wildfly


【解决方案1】:

原来这是 Eclipse 如何将我的项目的 EAR 文件部署到应用服务器的问题。 WAR 项目未设置为在部署程序集中包含 Maven 依赖项。一旦我进行了更改,它就会按预期进行部署,并且 Primefaces 可以正常工作。

【讨论】:

    猜你喜欢
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2015-08-10
    • 2014-01-28
    • 2015-11-25
    • 1970-01-01
    相关资源
    最近更新 更多