我使用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)
有人能指出我做错了吗?
我的文件结构是
+ Web Content
+ WEB-INF
- web.xml
- faces-config.xml
+ xyz
- xyz.xhtml
- xyz.xhtml
答案 0 :(得分: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 /&lt; whatever&gt;内的每个页面。 (当且仅当页面位于面部文件夹结构下时)。如果要为站点中的每个html页面应用Faces Servlet,请将配置更改为:
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
修改
我根据你的问题做了一个测试。它应该没有任何问题。确保项目已正确构建且已正确部署,如果仍有这些问题,请尝试更改servlet映射配置。
答案 1 :(得分:0)
问题出在xyz.xhtml
:它使用相对路径而不是绝对路径引用资源(模板?include?) - 当你将其向下移动到引用不再有效的目录时