2010-10-05 89 views
1

我得到了以下錯誤:JSF 2.0加載束

> org.apache.jasper.JasperException: An 
> exception occurred processing JSP page 
> /ajax/busstop_ajax.jsp at line 12 
    10: <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%> 
    11: <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%> 
    12: <f:loadBundle basename="/../messages.Messages" var="msg" /> 
    13: 
    14: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    15: "http://www.w3.org/TR/html4/loose.dtd"> 


    Stacktrace: 
     org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510) 
     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419) 
     org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
     org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
     org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) 

    root cause 

    java.lang.NullPointerException 
     com.sun.faces.taglib.jsf_core.LoadBundleTag.doStartTag(LoadBundleTag.java:148) 
     org.apache.jsp.ajax.busstop_005fajax_jsp._jspx_meth_f_005floadBundle_005f0(busstop_005fajax_jsp.java:184) 
     org.apache.jsp.ajax.busstop_005fajax_jsp._jspService(busstop_005fajax_jsp.java:68) 
     org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) 
     org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
     org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
     org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) 

我想添加一個包,以便能夠在界面翻譯。整個頁面使用jsp而不是html。

<%@page import="java.util.List"%> 
<%@page contentType="text/html" pageEncoding="UTF-8"%> 

<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%> 
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%> 
<f:loadBundle basename="messages.Messages" var="msg" /> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 

<f:view> 
    <html> 
     <head> 
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
      <title>JSP Page</title> 
     </head> 
     <body> 
      ... 
     </body> 
    </html> 
</f:view> 

我試圖將它添加到faces-config中,但沒有成功。我在這裏做錯了什麼? 感謝您的幫助!

回答

1

FacesContext不存在時,<f:loadBundle>將拋出NPE。

換句話說,您沒有調用通過的url-pattern的請求,如web.xml中所定義。 FacesServlet即負責創建FacesContext的人。如果url-pattern是例如*.jsf,則應該在網絡瀏覽器中打開pagename.jsf的頁面,因此不能打開pagename.jsp

通過這種方式的堆棧跟蹤也證明它根本沒有被JSF處理過。在調用f:loadBundle之前沒有單行指示參與JSF API或impl。


這就是說(或無關的目前的問題),鑑於你使用JSF 2.0(至少,你標記的那樣),而Facelets的是JSP -in案件的卓越接班人JSF-,我強烈建議完全放棄JSP並改用Facelets。