2010-10-05 87 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。