我收到以下错误:
> 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中添加它,但没有成功。我在这做错了什么? 谢谢你的帮助!
答案 0 :(得分:1)
当<f:loadBundle>
不存在时,FacesContext
会抛出NPE。
换句话说,您没有通过url-pattern
FacesServlet
web.xml
中的FacesServlet
来调用请求。 FacesContext
即负责创建url-pattern
的人。如果*.jsf
例如pagename.jsf
,您应该在pagename.jsp
之前打开网页浏览器中的页面,而不是f:loadBundle
。
顺便说一句,堆栈跟踪也证明它根本没有被JSF处理过。在调用{{1}}之前,没有单行表示JSF API或impl的参与。
那说(并且与当前问题无关),考虑到你正在使用JSF 2.0(至少,你这样标记)并且Facelets是JSP的优越继承者 - 在JSF-的情况下,我强烈建议完全删除JSP并改为使用Facelets。