NetBeans - Web 应用程序 - 网页子文件夹

NetBeans - Web application - Web pages subfolder

我创建了一个带有 EJB 和 war 模块的企业应用程序。我在这样组织的网页文件夹中添加了一些 XHTML 文件:

Web Pages
    WEB-INF
       web.xml
    protected
       testNavigation2.xhtml
    testNavigation.xhtml

我还使用 url-pattern *.xhtml 配置了 Faces Servlet。

部署我的应用程序后,我可以毫无问题地访问 URL:host/projectname/testNavigation.xhtml。显示 testNavigation.xhtml 文件。

但我无法访问:host/projectname/protected/testNavigation2.xhtml。使用 URL 结果:

HTTP Status 404 - /protected/testNavigation2.xhtml Not Found in ExternalContext as a Resource

服务器控制台(我使用的是 Glassfish 4.1)报告:

Warning: Context path from ServletContext: /meteocal-project-war differs from path from bundle: meteocal-project-war Warning:
JSF1064: unable to find or serve resource, /protected/testNavigation2.xhtml.

如何使 xhtml 文件可从子文件夹访问?我实际上对此做了很多研究,从我读到的内容来看,我正在试验的行为似乎很奇怪。

我认为这不是必需的,但我会 post web.xml 的内容以防我错了:

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.1"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">

    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>protected/testNavigation2.xhtml</welcome-file>
    </welcome-file-list>
</web-app>

感谢您的关注, 我将非常感谢你能提供的任何帮助

此答案已由 Tiny 在评论中发布。我在这里报告是为了将其标记为答案。

在应用程序根目录下创建了名为 protected 的文件夹后,您可能忘记了部署该应用程序,其中包含该 XHTML 文件 - testNavigation2.xhtml。从头开始重新部署应用程序。

每当您在应用程序中创建文件夹时,NetBeans 基本上都需要硬部署。如果即使在您进行硬部署后仍会发生这种情况,请扫描操作系统上的文件系统以查看在部署的 WAR 文件中是否有一个名为 protected 的文件夹具有上述 XHTML 文件。症状基本上只是新创建的文件夹保护自己以及提到的 XHTML 文件在部署的 WAR 文件中不可用。

来自小小