javax.faces.webapp.UIComponentClassicTagBase.setJspId上的java.lang.NullPointerException [英] java.lang.NullPointerException at javax.faces.webapp.UIComponentClassicTagBase.setJspId

查看:99
本文介绍了javax.faces.webapp.UIComponentClassicTagBase.setJspId上的java.lang.NullPointerException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经阅读了本教程,它是一本电子书,我被困在将JSP页面作为jsp页面的方式部署到tomcat服务器上,但是它使用的是JSF标签,我已经将javax.faces-2.1.13 jar放在了库,真正应该在哪里..

I have read this tutorials it's an ebook and I'm stuck at deploying the JSP page to my tomcat server by the way it's a jsp page but it's using JSF tags I already put my javax.faces-2.1.13 jar at the lib, where is should really belong to..

这是我的JSP页面标题hello.jsp:

Here is my JSP page title hello.jsp:

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="f"  uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h"  uri="http://java.sun.com/jsf/html"%>

<html>
<head>
<title>JSF In Action</title>
</head>
<body>
<f:view>
    <h:form id="welcome-form">
        <h:outputText id="welcomeOutput" value="Welcome to JavaServer Faces!" style="font-family: Arial, Sans-serif; font-size: 24; color: green;" />
        <p><h:message id="error" for="helloInput" style="color: red;" /></p>

        <p><h:outputLabel for="helloInput">
            <h:outputText id="helloInputLabel" value="Enter Number of Controls to Display:" />
        </h:outputLabel>
        <h:inputText id="helloInput" value="#{ helloBean.numcontrol }" required="true">
            <f:validateLongRange minimum="1" maximum="500" />
        </h:inputText></p>

        <p><h:panelGrid id="controlPanel" binding="#{ helloBean.controlPanel }" columns="20" border="1" cellspacing="0">
        </h:panelGrid></p>
        <h:commandButton id="redisplaycommand" type="submit" value="Redisplay" actionListener="#{ helloBean.addControl }" />
        <h:commandButton id="goodbyecommand" type="submit" value="GoodBye" action="#{ helloBean.goodbye }" immediate="true" />
    </h:form>
</f:view>
</body>
</html>

这是我得到的堆栈跟踪错误:

And this is the stack trace error that I get:

 SEVERE: Servlet.service() for servlet [jsp] in context with path [/SampleJSF1] threw exception [An exception occurred processing JSP page /hello.jsp at line 5

2: <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
3: <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
4: 
5: <f:view>
6: <html>
7: <head>
8: <title>


Stacktrace:] with root cause
java.lang.NullPointerException
    at javax.faces.webapp.UIComponentClassicTagBase.setJspId(UIComponentClassicTagBase.java:1858)
    at org.apache.jsp.hello_jsp._jspx_meth_f_005fview_005f0(hello_jsp.java:126)
    at org.apache.jsp.hello_jsp._jspService(hello_jsp.java:100)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

任何能帮助到我的人,我都非常感激. :)

Anyone that can help guys I really appreciate it. :)

推荐答案

java.lang.NullPointerException
    at javax.faces.webapp.UIComponentClassicTagBase.setJspId(UIComponentClassicTagBase.java:1858)

此时FacesContextnull.这意味着FacesServlet没有完成其工作.堆栈跟踪也证明了这一点. at javax.faces.webapp.FacesServlet.service()行丢失了.

The FacesContext is null at that point. This means that the FacesServlet didn't do its job. The stacktrace is also evidence of this; the line at javax.faces.webapp.FacesServlet.service() is missing.

请求URL必须与您在/WEB-INF/web.xml中配置的FacesServlet<url-pattern>匹配,以便正确调用它.

The request URL needs to match the <url-pattern> of the FacesServlet as you've configured in /WEB-INF/web.xml in order to properly invoke it.

因此,如果是例如<url-pattern>*.jsf</url-pattern>,则应在浏览器地址栏中使用/hello.jsf而不是/hello.jsp打开页面.

So, if it's for example <url-pattern>*.jsf</url-pattern>, then you should open the page by /hello.jsf instead of /hello.jsp in browser address bar.

无关与具体问题无关,自JSF 2.0起,JSP已被弃用.您应该放弃这种传统视图技术,而要看其后继的Facelets.您应该绝对确保您不会阅读针对JSF 1.x而非JSF 2.x的书籍/教程/资源.与1.x相比,在JSF 2.x中有很多不同的处理方式,从长远来看,这只会导致启动器之间的混乱.

Unrelated to the concrete problem, JSP is deprecated since JSF 2.0. You should be discarding this legacy view technology and be looking at its successor Facelets. You should make absolutely sure that you aren't reading books/tutorials/resources targeted on JSF 1.x instead of JSF 2.x. A lot of things are done differently in JSF 2.x as opposed to 1.x, which would in long term only lead to confusion among starters.

  • Can not find the tag library descriptor for http://java.sun.com/jsf/facelets
  • How to include another XHTML in XHTML using JSF 2.0 Facelets?
  • Migrating from JSF 1.2 to JSF 2.0

这篇关于javax.faces.webapp.UIComponentClassicTagBase.setJspId上的java.lang.NullPointerException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆