JSF 2.0 EL标记不在浏览器中呈现

时间:2012-04-09 12:32:02

标签: html eclipse jsf-2 tomcat7 el

以下是我的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并且它不起作用。

1 个答案:

答案 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