4

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

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. :)

BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
Heidi Lilybeth
  • 127
  • 1
  • 7
  • 17

2 Answers2

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

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.

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.

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.


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.

See also:

Community
  • 1
  • 1
BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
  • thanks I should be using facelets but before that do you know any good books about facelet including setting up the project that can really help me start with. Cause I'm planning to use facelet to my next project thanks. :) – Heidi Lilybeth Oct 23 '12 at 14:14
  • Just go through a JSF 2.x tutorial instead of a JSF 1.x one. Further, see also the tag wiki pages for some hello world examples and links to good resources (put your mouse above `[jsf]` tag which you placed on the question until a black info box shows up and then click therein the *info* link) and of course also the "See also" links in my answer which aren't been placed just for decoration ;) – BalusC Oct 23 '12 at 14:16
  • Thanks but I'm new to this JSF technology and also the link that you gave me is nice. but I think I need to find a book or tutorial that can help me familiarize/start with the JSF technology first. – Heidi Lilybeth Oct 23 '12 at 14:21
  • Any sane JSF book or tutorial (e.g. with good reviews on amazon.com and references on internet) suffices. You only need to make sure that it's targeted on JSF 2.x, not JSF 1.x. That's all. You can find a list of those tutorials at the bottom of our JSF tag info page. – BalusC Oct 23 '12 at 14:25
  • sorry I just notice it a while ago. I'm reading it now :) by the way eclipse does not recorgnize the JSF tags in .xhtml extension do you know what might cause this or do I need to configure something? – Heidi Lilybeth Oct 23 '12 at 14:28
0

To resolve this follow below given steps:

  1. Go to project properties
  2. Project faces
  3. Check javaServer Faces
  4. Click on further configuration required
  5. In JSF implementation Library select: Disable Library Configuration
  6. Apply
PLASMA chicken
  • 2,777
  • 2
  • 15
  • 25
DBK
  • 1
  • 1