Pastie 似乎已关闭(我无法读取您的文件)...但 Tomcat 不是完整的 Java EE 容器。您需要 Mojarra 运行时。你的构建中包含它吗?
编辑:NM 又回来了。我在你的 web.xml 中看到了 JSF servlet,所以你可以忽略这个答案。
EDIT2:将此添加到您的 web.xml:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
然后将您的 .html 文件重命名为 .xhtml。我感觉 servlet 不知道它应该使用 JSF 呈现您的文件。
EDIT3:所以我认为正在发生的事情是您对服务器是否应该使用 Faces 呈现页面感到困惑。您的网址栏中的网址是“localhost/app/faces/index.html”,它与文件完全匹配。那么它应该做一个 sendfile 还是应该通过 servlet 运行它?重命名为 .xhtml 的原因可能是因为它在内部知道必须将 .html 请求映射到 .xhtml 文件。
所以也许尝试将你的文件重命名为 .html5,然后在你的 web.xml 中设置它:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.html5</param-value>
</context-param>
我认为任何扩展都可以工作......你也可以这样做:
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.html</param-value>
</context-param>
那么您的主页将是http://localhost/app/index.jsf