JSF 2.0 загрузка пакета - PullRequest
       4

JSF 2.0 загрузка пакета

1 голос
/ 05 октября 2010

Я получил следующую ошибку:

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

Я также пытался добавить ее в Face-Config, но безуспешно.Что я здесь не так делаю?Спасибо за помощь!

1 Ответ

1 голос
/ 06 октября 2010

<f:loadBundle> будет бросать NPE таким образом, когда FacesContext отсутствует.

Другими словами, вы не вызываете запрос через url-pattern из FacesServlet, как определено в web.xml. FacesServlet именно тот, кто отвечает за создание FacesContext. Если url-pattern является, например, *.jsf, вам следует открыть страницу в веб-браузере с помощью pagename.jsf, а не pagename.jsp.

Кстати, трассировка стека также свидетельствует о том, что она не была обработана JSF вообще. Там нет ни одной строки, указывающей на участие JSF API или impl до вызова f:loadBundle.


Это сказанное (и не имеющее отношения к текущей проблеме), учитывая тот факт, что вы используете JSF 2.0 (по крайней мере, вы так пометили) и что Facelets является превосходным преемником JSP в случае JSF- Настоятельно рекомендуем вообще отказаться от JSP и использовать Facelets.

...