【发布时间】: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 页面中有一个简单的 <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>
...
【问题讨论】:
-
在你的页面中,你使用
<body>还是<h:body>? -
面对
web.xml中的servlet? This post 有一个例子。 -
更新了问题以显示我声明 Faces Servlet 的 web.xml 的 sn-p
-
您要测试的网址是什么?如果在
web.xml中将*.xhtml替换为*.jsf并将您的url 更改为http://<context_root>/<your_page>.jsf,这样可以吗? -
不。同样的行为。
标签: java jsf jakarta-ee primefaces wildfly