【问题标题】:Opening a JSF2 Facelets page results in a 404 on a JSP file打开 JSF2 Facelets 页面会导致 JSP 文件出现 404
【发布时间】:2012-05-23 04:10:43
【问题描述】:

我创建了一个新项目作为本教程JSF Tools tutorial - Build a JSF 2.0 application

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

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

错误消息显示HTTP Status 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>

【问题讨论】:

    标签: jsf-2 facelets


    【解决方案1】:

    它正在寻找 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)。

    【讨论】:

    • 好吧,那还是有问题。服务器日志中打印的 MyFaces 版本是什么?服务器日志中有任何警告吗?在真正的网络浏览器中打开页面怎么样?还有/faces URL? localhost:8080/Marwa/faces/m.xhtml
    • 4shared.com/photo/G42R9jWj/jsf.html 和我的战争文件4shared.com/file/rVmt8eQ5/Marwa.html 当我使用这个 URL localhost:8080/Marwa/faces/m.xhtml 时,文本只会出现,而任何 jsf 组件都不会
    • 服务器日志显示您使用的是 Mojarra 1.2_13。你需要 2.x。升级库。你明白答案了吗?
    • 好的 BalusC,我明白你在说什么,我使用 myfaces-core-assembly-2.1.7-bin.zip,eclips helios 3.6 和 tomcat 6,但它仍然显示“Mojarra 1.2_13”但是当我添加 jsf-facelets.jar 文件时它可以工作但它无法理解
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 2023-03-19
    • 2012-07-06
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 2016-07-08
    相关资源
    最近更新 更多