JSF RuntimeException:找不到FacesContext

时间:2010-03-11 11:22:45

标签: java jsp jsf

当我在JSP中编写<h:outputText value="Login Name"/>标记时,我收到以下异常消息:

Cannot find FacesContext

没有它,我的JSP工作正常。这是我的JSP:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
    <body>
        Login Name <input type="text" value=""/><br>
        <h:outputText value="Login Name"/>
        Password<input type="password" value=""/><br>
        <input type="submit" value="Login">
    </body>
</html>

1 个答案:

答案 0 :(得分:5)

您的代码存在两个缺陷:

  1. 此异常的根本原因是您忘记通过url-pattern中定义的FacesServlet的{​​{1}}传递请求。如果JSP页面例如名为web.xmlpage.jsp的{​​{1}}例如是url-pattern,那么您需要通过FacesServlet而不是*.jsf来调用它http://example.com/context/page.jsf。这样,.jsp将被调用并创建FacesServlet。否则,页面中的JSF组件会抱怨无法找到FacesContext,您将面临此特殊异常。

  2. 页面中缺少FacesContext。将整个<f:view>包裹在其中。 E.g。

    <html>
  3. 顺便说一句, <%@ page pageEncoding="UTF-8" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <!doctype ... > <f:view> <html> ... </html> </f:view> 中的import属性完全是多余的。摆脱它。