0

index.xhtml (eclipse juno 4.2 + JBoss AS 7.1) 1 ページのみの基本的な動的 Web プロジェクトを作成しました。Web ページを実行すると、ブラウザには jsf ではなく html 要素のみが表示されます。私の 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>

「OK」ボタンしか見えません。サーバー(スタンドアロン)を起動すると、次の警告が表示されます。

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

Web アプリケーションのランタイム クラスパスが混乱しています。ログの最後の警告は、すでに完全な答えです:

JSF1069: JSF 2.0 Facelets ViewHandler を古い FaceletViewHandler として無効にする com.sun.facelets.FaceletViewHandler が明示的に構成されています。これが望ましくない動作である場合は、古い FaceletViewHandler とライブラリをアプリケーションから削除してください。

何らかの理由で、jsf-facelets.jarFacelets 1.x からのファイル ( com.sun.faceletspackage で識別) が Web アプリケーションのランタイム クラスパスにあるのに、JSF 2.0 を使用していて、それ自体で既に Facelets 2.x がパッケージ化されています ( com.sun.faces.faceletspackage で識別)。

jsf-facelets.jarWeb アプリケーションの実行時クラスパスにある JSF 1.x 関連のアーティファクトをすべて取り除きます (/WEB-INF/libフォルダーでカバーされている他のアーティファクトの中でも)。JSF 1.x を対象とした本/チュートリアル/リソースを読むのをやめて、JSF 2.x のものに目を向けてください。JSF 2.x では、多くのことが異なる方法で行われるため、JSF 1.x のリソースに依存しても混乱とトラブルが発生するだけです。

JSF 2.x がバンドルされて出荷されている JBoss 7 では、 に JAR は必要ありません/WEB-INF/lib。また、 には何も入れる必要はありませんfaces-config.xml。JSF 2.1 を使用していて、 のデフォルトの URL マッピングに依存している場合は*.jsf、 にも何も入れる必要はありませんweb.xml。したがって、両方のファイルを効果的に空に保つことができます。

于 2013-06-01T16:34:47.747 に答える