以下是我的index.html
文件,其中包含JSF:http://pastie.org/3755252
当我在Eclipse Indigo中选择Run as > Run on Server
(Tomcat 7.0.12)时,我得到一个只显示以下内容的页面:
You have login attempts left.
Chrome中也是如此。虽然在查看了页面的源代码之后,它显示的就像我在Eclipse中编写的那样(以前的pastie文件),但它似乎应该被翻译成html。
这是我的Member.java文件:http://pastie.org/3755277 这是我的web.xml:http://pastie.org/3755284
在我注意到我将JSF 2.0与JSF1。*语法混合之前,它曾经工作过。然后我将* .jsp更改为* .html并且它不起作用。
答案 0 :(得分:3)
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