当前位置 : 主页 > 编程语言 > java >

jsp – java.lang.RuntimeException找不到FacesContext

来源:互联网 收集:自由互联 发布时间:2021-06-25
我不知道如何继续,但我总是得到新的JSF 1.2 Web应用程序的“ java.lang.RuntimeException:找不到FacesContext”.我确定这只是我找不到的一些配置. 第一个f:或h:标记出现异常.已经有了重要的
我不知道如何继续,但我总是得到新的JSF 1.2 Web应用程序的“ java.lang.RuntimeException:找不到FacesContext”.我确定这只是我找不到的一些配置.

第一个f:或h:标记出现异常.已经有了重要的< f:view>在开始.

我的index.jsp

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<f:view>
<html>
    <head>
        <title>MyWebsite</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">
    </head>
    <body>
        <div>MyContent</div>
    </body>
</html>
</f:view>

我的web.xml看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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-app_2_5.xsd">
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.jsp</param-value>
    </context-param>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>720</session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

然后我还有一个faces-config.xml,它应该引用我想在页面正文中使用的myBean:

<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="1.2" 
              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_1_2.xsd">
    <application>
        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
    </application>

    <managed-bean>
        <managed-bean-name>myClassName</managed-bean-name>
        <managed-bean-class>
            com.company.className
        </managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
</faces-config>

我在这里错过了什么?

java.lang.RuntimeException: Cannot find FacesContext

因此,JSF< f:xxx>和< h:xxx>标签抱怨无法找到FacesContext. FacesServlet是负责创建faces上下文的人.当请求URL与其URL模式匹配时,将调用faces servlet,这在您的特定情况下是* .jsf.因此,当您将index.jsp打开为http:// localhost:8080 / context / index.jsp时,或者依赖于< welcome-file>设置,那么你没有调用faces servlet,你确实会得到这个异常.

您需要将index.jsp打开为http:// localhost:8080 / context / index.jsf,或者将欢迎文件条目设置为index.jsf以便正确调用faces servlet,以便它可以创建面JSP页面中声明的JSF组件所需的上下文.

但请注意,在此JSF 1.x Tomcat环境中仅修复欢迎文件是不够的.您还需要在webcontent中的index.jsp文件旁边提供一个物理上存在但完全空的index.jsf文件,以便欺骗Tomcat,index.jsf确实作为欢迎文件存在.否则会显示404错误,因为它会预先检查欢迎文件的物理存在.

也可以看看:

> javax.faces.FacesException: java.lang.RuntimeException: Cannot find FacesContext

与具体问题无关,我想知道为什么你使用JSP如果你显然已经安装了Facelets 1.x并注册了它的视图处理程序. Facelets远远超过JSP的superior.

网友评论