【问题标题】:JSF RuntimeException: Cannot find FacesContextJSF RuntimeException:找不到 FacesContext
【发布时间】:2010-03-11 11:22:45
【问题描述】:

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

找不到 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>

【问题讨论】:

  • 这里没有问题,几乎没有有用的文字或线索。代码-呕吐。
  • @BalusC:恕我直言,糟糕的标题让他很沮丧
  • @Roman:该代码最初发布时没有代码标签,因此无法阅读。 Sunny Mate 根本不注意格式。斯卡夫曼修好了。检查问题修订历史的底部:stackoverflow.com/posts/2424455/revisions

标签: java jsp jsf


【解决方案1】:

你的代码有两个缺陷:

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

  2. 页面中缺少&lt;f:view&gt;。将整个 &lt;html&gt; 包裹在其中。例如

     <%@ 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>
    

顺便说一句,&lt;%@page&gt; 中的 import 属性完全是多余的。摆脱它。

【讨论】:

    猜你喜欢
    • 2011-06-01
    • 2011-09-01
    • 2011-07-17
    • 2013-04-27
    • 1970-01-01
    • 2011-05-28
    • 2014-05-22
    • 2012-08-01
    相关资源
    最近更新 更多