0

我已经使用 JF 2.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

问题在于xyz.xhtml:它使用相对路径而不是绝对路径来引用资源(模板?包括?) - 当您将其移到目录中时,该引用不再有效。

于 2012-08-04T20:15:52.157 回答
0

也许你有这样的第一个文件夹结构

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

Faces Servlet 的 servlet 映射配置如下所示:

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

这意味着 Faces Servlet(将请求发送到 JSF 框架的 servlet)将应用于 ProjectName/faces/<whatever> 中的每个页面(当且仅当页面位于 faces 文件夹结构下时)。如果您想为站点中的每个 html 页面应用 Faces Servlet,请将配置更改为:

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

编辑

我根据你的问题做了一个测试。它应该没有问题。确保项目已正确构建并已正确部署,如果仍然存在这些问题,请尝试更改 servlet 映射配置。

于 2012-07-13T20:57:06.857 回答