0

我创建了一个新项目作为本教程 JSF 工具教程 - 构建 JSF 2.0 应用程序

当我尝试通过右键单击m.xhtml并选择在服务器上运行来运行它时,我在m.jsp.

浏览器地址栏中的 URL 为:http://localhost:8080/Marwa/m.jsf

错误消息显示HTTP 状态 404 - /Marwa/m.jsp

这是如何引起的,我该如何解决?

这是我的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
 <display-name>Marwa</display-name>
  <welcome-file-list>
    <welcome-file>m.xhtml</welcome-file>

  </welcome-file-list>
  <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>/faces/*</url-pattern>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
  <context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>resources.application</param-value>
  </context-param>
  <context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
  </context-param>
  <context-param>
    <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>
    <param-value>true</param-value>
  </context-param>
  <context-param>
    <param-name>org.apache.myfaces.PRETTY_HTML</param-name>
    <param-value>true</param-value>
  </context-param>
  <context-param>
   <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name>
   <param-value>false</param-value>
  </context-param>
  <context-param>
   <param-name>org.apache.myfaces.AUTO_SCROLL</param-name>
   <param-value>true</param-value>
  </context-param>

</web-app>
4

1 回答 1

2

它正在寻找 JSP 文件而不是 Facelets 文件。

JSP 是旧 JSF 1.x 中的默认视图技术。因此,此问题表明您实际上是在使用 JSF 1.x 或在 JSF 1.x 模式下运行 JSF 2.x。

确保那里确实有 JSF 2.x 库。您可以通过阅读服务器启动日志或使用 zip 工具提取 JSF JAR 文件并阅读 MANIFEST 文件来检查确切的 JSF 版本。您也可以在http://myfaces.apache.org/download.html(或http://javaserverfaces.java.net/以获取其他实现)重新下载正确的版本。确保您获得 2.x 版本。

还要确保faces-config.xml声明符合 JSF 2.x 规范版本。它应该如下所示:

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

<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
    version="2.0">

    <!-- Config here -->

</faces-config>

如果您的 Eclipse 没有自动完成这一切,那么您显然使用的是过时的 Eclipse 版本。Eclipse Helios (3.6) 首次为 Java EE 引入了内置 JSF2 支持。您可以在http://www.eclipse.org/downloads/获得最新版本,目前是 Indigo SR2 (3.7.2)。

于 2012-05-24T03:35:34.783 回答