1

以下是我index.html包含 JSF 的文件:http: //pastie.org/3755252

当我Run as > Run on Server在 Eclipse Indigo 中选择 (Tomcat 7.0.12) 时,我得到一个页面,其中仅显示以下内容:

You have login attempts left.

同样的情况也发生在 Chrome 中。虽然在查看页面的源代码后,它显示的内容与我在 Eclipse 中编写的一样(之前的粘贴文件),但似乎应该将其翻译为 html。

这是我的 Member.java 文件:http ://pastie.org/3755277 这是我的 web.xml:http ://pastie.org/3755284

在我注意到我将 JSF 2.0 与 JSF1.* 语法混合之前,它曾经可以工作。然后我将我的 *.jsp 更改为 *.html 并且它不起作用。

4

1 回答 1

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

于 2012-04-09T14:24:15.787 回答