0

JF2.0を使用してプロジェクトを作成しました。

プロジェクトを実行するとき、次のようにxyz.xhtml言うことでファイルを実行できますhttp://localhost:8080/myProject/faces/xyz.xhtml

しかし、同じものをフォルダに入れxyzて実行しようとするとhttp://localhost:8080/myProject/faces/xyz/xyz.xhtml、例外が発生しjava.io.FileNotFoundExceptionます。

スタックトレースの最初の数行は

java.io.FileNotFoundException
at org.apache.naming.resources.DirContextURLConnection.getInputStream(DirContextURLConnection.java:403)
at com.sun.faces.facelets.impl.DefaultFaceletCache._getLastModified(DefaultFaceletCache.java:172)
at com.sun.faces.facelets.impl.DefaultFaceletCache.access$000(DefaultFaceletCache.java:62)
at com.sun.faces.facelets.impl.DefaultFaceletCache$1.newInstance(DefaultFaceletCache.java:82)
at com.sun.faces.facelets.impl.DefaultFaceletCache$1.newInstance(DefaultFaceletCache.java:78)
at com.sun.faces.util.ExpiringConcurrentCache$1.call(ExpiringConcurrentCache.java:99)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

誰かが私が間違っていることを指摘できますか?

アップデート1

私が持っているファイル構造は

+ Web Content
  + WEB-INF
    - web.xml
    - faces-config.xml
  + xyz
    - xyz.xhtml
  - xyz.xhtml
4

2 に答える 2

0

多分あなたはこのような最初のフォルダ構造を持っています

+ Web Content
  - xyz.xhtml
  + xyz
    - xyz.xhtml

また、Facesサーブレットのサーブレットマッピング構成は次のようになります。

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
</servlet-mapping>

これは、Facesサーブレット(JSFフレームワークにリクエストを送信するサーブレット)がProjectName / faces / <whatever>内のすべてのページに適用されることを意味します(ページがfacesフォルダー構造の下にある場合のみ)。サイト内のすべてのHTMLページにFacesサーブレットを適用する場合は、構成を次のように変更します。

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

編集

私はあなたの問題に基づいてテストを行いました。問題なく動作するはずです。プロジェクトが正しくビルドされ、正しくデプロイされていることを確認してください。それでもこれらの問題が発生する場合は、サーブレットマッピング構成を変更してみてください。

于 2012-07-13T20:57:06.857 に答える
0

問題は次のxyz.xhtmlとおりです。絶対パスではなく相対パスを使用してリソース(テンプレート?インクルード?)を参照しています。リソースをディレクトリに移動すると、その参照は無効になります。

于 2012-08-04T20:15:52.157 に答える