0

J2EE 5 および Tomcat 6 で Geronimo を使用しており、JSF を使用して 1 つの単純なページを作成しようとしています。タグライブラリファイルを入れてmyfaces_core.tld動作myfaces_html.tldWEB-INFせましたが、Windows だけでした。Linux では、WAR を展開IOExceptionしていたときに原因不明のことがわかりました。2 つのタグ ライブラリ ファイルを削除することで、デプロイが可能になりました。しかし、ブラウザでページを開いたときにエラーが発生しました。WEB-INF/myfaces_html.tldJSP ファイルのヘッダーに指定されているファイルがありませんでした。MyFaces の例では、MyFaces TLD ではなく、一般的な Sun Java TLD が使用されています。WEB-INF/myfaces_html.tldURIをhttp://java.sun.com/jsf/htmlantに上書きしましたが、エラーが発生しました The absolute uri: http://java.sun.com/jsf/htmlweb.xml またはこのアプリケーションでデプロイされた jar ファイルでは解決できません

私は今迷っています。JSF コンポーネントを使用するには、タグ ライブラリ記述ファイルを WAR に配置する必要がありますか? これらのファイルは、Geronimo コンテナーの MyFaces JAR に既に含まれていますよね? コンテナーは、プラットフォームに関係なく同じ動作をする必要がありますか? 単純なアプリケーションを本当にプラットフォームに依存しないようにするにはどうすればよいですか?

4

1 に答える 1

1

サード パーティのタグ ライブラリの JAR ファイルを抽出して、そのルース TLD ファイルをフォルダに配置しないでください/WEB-INF。TLD ファイルは元の JAR ファイルに保持する必要があり、JAR ファイルは変更せずにランタイム クラスパスにドロップする必要があります。それ以外の本/チュートリアル/フォーラムが示唆しているものは何でも、ブラックリストに登録する必要があります。

プロジェクト構造をクリーンアップして、緩い TLD ファイルを取り除き、これに関連するすべての変更を元に戻しますweb.xml

JSF/WEB-INF/libを Tomcat 6 で実行するには、フォルダに 2 つのファイルのみを含める必要があります。1 つのファイルは抽象 API を表し、もう 1 つのファイルは具体的な実装を表します。どうやら MyFaces を使用することを選択したように、それはこれらの 2 つの JAR ファイルになります (おそらく、ファイル名の末尾にバージョン番号が付いていますが、これは状況によって異なります)。

  • myfaces-api.jar
  • myfaces-impl.jar

/WEB-INF/libそれらを、webapp のデフォルトのランタイム クラスパスの一部であるフォルダーにドロップします。それで全部です。FacesServlet次のステップは、webapp の でを宣言してマッピングすることweb.xmlです。

適切な本/チュートリアルを読んでいることを確認してください。

于 2011-08-05T21:03:02.760 に答える