Java.lang.NullPointerException in javax.faces.webapp.UIComponentClassicTagBase.setJspId

I read this tutorial, this is an e-book, and I am stuck in deploying a JSP page on my tomcat server, since it is a jsp page, but using JSF tags I already put the javax.faces-2.1.13 jar in lib where it should really belong ..

Here is my JSP hello.jsp page title:

<!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 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 who can help the guys, I really appreciate that. :)

+4
source share
1 answer
 java.lang.NullPointerException at javax.faces.webapp.UIComponentClassicTagBase.setJspId(UIComponentClassicTagBase.java:1858) 

FacesContext null at this point. This means that FacesServlet not completed its work. Collision also attests to this; the line at javax.faces.webapp.FacesServlet.service() missing.

The request URL must match the <url-pattern> FacesServlet , as you configured in /WEB-INF/web.xml , to call it correctly.

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


Unrelated to the specific issue, the JSP is deprecated with JSF 2.0. You should drop this traditional viewing technology and look at its successor Facelets. You must be absolutely sure that you are not reading books / textbooks / resources oriented to JSF 1.x instead of JSF 2.x. In JSF 2.x, a lot of things happen differently, unlike 1.x, which in the long run will only lead to confusion between starters.

See also:

+6
source

Source: https://habr.com/ru/post/1441572/


All Articles