0

我用一页 index.xhtml (eclipse juno 4.2 + JBoss AS 7.1) 制作了基本的动态 web 项目。当我运行我的网页时,浏览器只显示 html 元素而不是 jsf。我的 index.xhtml 代码:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
</head>
<body>
push the button:
<button>ok</button>
<h:button value="not ok"></h:button>
</body>
</html>

我只能看到“确定”按钮。当我启动我的服务器(独立)时,我有警告:

WARN  [org.jboss.as.server.deployment] (MSC service thread 1-3) JBAS015893: Encountered invalid class name 'com.sun.faces.vendor.Tomcat6InjectionProvider:org.apache.catalina.util.DefaultAnnotationProcessor' for service type 'com.sun.faces.spi.injectionprovider'
WARN  [org.jboss.as.server.deployment] (MSC service thread 1-3) JBAS015893: Encountered invalid class name 'com.sun.faces.vendor.Jetty6InjectionProvider:org.mortbay.jetty.plus.annotation.InjectionCollection' for service type 'com.sun.faces.spi.injectionprovider'
WARNING [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-3) JSF1069: Disabling the JSF 2.0 Facelets ViewHandler as an older FaceletViewHandler, com.sun.facelets.FaceletViewHandler, has been explicitly configured. If this is not desired behavior, remove the older FaceletViewHandler and library from your application.

有没有人有同样的问题?我犯了错误或IDE或服务器有一些错误?感谢帮助。

我还有另一个问题。我想添加库 primafaces。我右键单击项目,然后属性-> 部署程序集-> 添加,.jar 显示在管理窗口中,但库没有出现在文件层次结构(WEB-INF/lib)中。

4

1 回答 1

3

你的 webapp 的运行时类路径是一团糟。您日志中的最后一个警告已经是完整的答案:

JSF1069:已明确配置了将 JSF 2.0 Facelets ViewHandler 禁用为旧的 FaceletViewHandler,com.sun.facelets.FaceletViewHandler。如果这不是所需的行为,请从您的应用程序中删除旧的 FaceletViewHandler 和库。

由于某种原因,当您使用 JSF 2.0 时,您的 webapp 的运行时类路径中有一个jsf-facelets.jar来自 Facelets 1.x 的文件(由com.sun.facelets包标识),而 JSF 2.0 本身已经打包了 Facelets 2.x(由com.sun.faces.facelets包标识)。

摆脱jsf-facelets.jarwebapp 的运行时类路径中的任何其他 JSF 1.x 相关工件(以及该/WEB-INF/lib文件夹涵盖的其他工件)。停止阅读以 JSF 1.x 为目标的书籍/教程/资源,并前往 JSF 2.x 的那些。在 JSF 2.x 上,很多事情都以不同的方式完成,因此依赖 JSF 1.x 资源只会导致混乱和麻烦。

在已经捆绑了 JSF 2.x 的 JBoss 7 上,您不需要/WEB-INF/lib. 你也不需要把任何东西放进去faces-config.xml。如果您使用的是 JSF 2.1 并依赖于 的默认 URL 映射*.jsf,那么您也不需要在web.xml. 所以这两个文件都可以有效地保持为空。

于 2013-06-01T16:34:47.747 回答