• Post Reply Bookmark Topic Watch Topic
  • New Topic

why error NullPointerException?

 
fiza jay
Greenhorn
Posts: 10
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Im using Tomcat4.1 and j2sdk1.4.1_02 for my JSP and XML. The problem is dat when i try to save my record in the xml, it gives error=>java.lang.NullPointerException. I do not know what is the cause..
Anybody can please help me.. Thanx.
 
Andy Bowes
Ranch Hand
Posts: 171
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
We are going to need more info than this to get to the bottom of your problem.
We at least need the source code of the JSP that you are trying to execute and the stack trace of the error.
The NullPointerException just means that you are attempting to use an object that has yet to be instantiated. I suggest that you have a read through your code or debug it.
 
fiza jay
Greenhorn
Posts: 10
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
This is my jsp code:
%@ page import="java.io.File,
org.dom4j.Document,
org.dom4j.Element,
org.dom4j.io.SAXReader" %>
lt%
// get the parameters:
int id = 0;
try
{
id = Integer.parseInt( request.getParameter("id") );
} catch ( NumberFormatException ne ) {}
String name = request.getParameter("name");
String school = request.getParameter("school");
String centre = request.getParameter("centre");
String staffcategory = request.getParameter("staffcategory");
String staffinvolvement = request.getParameter("staffinvolvement");
String areasofresearch = request.getParameter("areasofresearch");
String qualifications = request.getParameter("qualifications");
String citizenship = request.getParameter("citizenship");
String staffparticulars = request.getParameter("staffparticulars");
// parse the document:
SAXReader reader = new SAXReader();
String path = application.getRealPath("/ViewStaff_list.xml");
Document doc = reader.read( new File(path) );
if ( id == 0 )
{
// if we have a new project then we generate the id by
// adding 1 to the ID of the last node:
java.util.List list = doc.selectNodes( "//staff-list/staff" );
org.dom4j.Node lastStaff = (org.dom4j.Node) list.get( list.size()-1 );
id = Integer.parseInt( lastStaff.valueOf("@id") ) + 1;
// create the new element
Element newStaff = doc.getRootElement().addElement( "staff" )
.addAttribute( "id", Integer.toString(id) );
newStaff.addElement("name").addText(name);
newStaff.addElement("school").addText(school);
newStaff.addElement("centre").addText(centre);
newStaff.addElement("staffcategory").addText(staffcategory);
newStaff.addElement("staffinvolvement").addText(staffinvolvement);
newStaff.addElement("areasofresearch").addText(areasofresearch);
newStaff.addElement("qualifications").addText(qualifications);
newStaff.addElement("citizenship").addText(citizenship);
newStaff.addElement("staffparticulars").addText(staffparticulars);

}
else
{
// we locate the project that we are going to modify
Element staff = (Element) doc.selectSingleNode( "//staff-list/staff[@id=" + id + "]" );
// and then we modify the values
staff.selectSingleNode( "name" ).setText(name);
staff.selectSingleNode( "school" ).setText(school);
staff.selectSingleNode( "centre" ).setText(centre);
staff.selectSingleNode( "staffcategory" ).setText(staffcategory);
staff.selectSingleNode( "staffinvolvement" ).setText(staffinvolvement);
staff.selectSingleNode( "areasofresearch" ).setText(areasofresearch);
staff.selectSingleNode( "qualifications" ).setText(qualifications);
staff.selectSingleNode( "citizenship" ).setText(citizenship);
staff.selectSingleNode( "staffparticulars" ).setText(staffparticulars);
}
// write the file:
java.io.FileWriter output = new java.io.FileWriter( path );
doc.write( output );
output.close();
%>
This my jsp_java code:
package org.apache.jsp;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import org.apache.jasper.runtime.*;
import java.io.File;
import java.util.*;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class SaveStaff_jsp extends HttpJspBase {

private static java.util.Vector _jspx_includes;
public java.util.List getIncludes() {
return _jspx_includes;
}
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {
JspFactory _jspxFactory = null;
javax.servlet.jsp.PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
JspWriter _jspx_out = null;

try {
_jspxFactory = JspFactory.getDefaultFactory();
response.setContentType("text/html;charset=ISO-8859-1");
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;
out.write("\r\n");
out.write("\r\n");
out.write("\r\n");
out.write("\r\n");
out.write("\r\n\r\n");
// get the parameters:
int id = 0;
try
{
id = Integer.parseInt( request.getParameter("id") );
} catch ( NumberFormatException ne ) {}
String name = request.getParameter("name");
session.setAttribute("staff", name);
String school = request.getParameter("school");
session.setAttribute("staff", school);
String centre = request.getParameter("centre");
session.setAttribute("staff", centre);
String staffcategory = request.getParameter("staffcategory");
session.setAttribute("staff", staffcategory);
String staffinvolvement = request.getParameter("staffinvolvement");
session.setAttribute("staff", staffinvolvement);
String areasofresearch = request.getParameter("areasofresearch");
session.setAttribute("staff", areasofresearch);
String qualifications = request.getParameter("qualifications");
session.setAttribute("staff", qualifications);
String citizenship = request.getParameter("citizenship");
session.setAttribute("staff", citizenship);
String staffparticulars = request.getParameter("staffparticulars");
session.setAttribute("staff", staffparticulars);
// parse the document:
SAXReader reader = new SAXReader();
String path = application.getRealPath("/ViewStaff_list.xml");
Document doc = reader.read( new File(path) );

if ( id == 0 )

{
// if we have a new project then we generate the id by
// adding 1 to the ID of the last node:
java.util.List list = doc.selectNodes( "//staff-list/staff" );
org.dom4j.Node lastStaff = (org.dom4j.Node) list.get( list.size()-1 );
id = Integer.parseInt( lastStaff.valueOf("@id") ) + 1;
// create the new element
Element newStaff = doc.getRootElement().addElement( "staff" )
.addAttribute( "id", Integer.toString(id) );
if(name != null) {
newStaff.addElement("name").addText(name);
}else {
newStaff.addElement("name").addText("");
}
if(school != null) {
newStaff.addElement("school").addText(school);
}else {
newStaff.addElement("school").addText("");
}
if(centre != null) {
newStaff.addElement("centre").addText(centre);
}else {
newStaff.addElement("centre").addText("");
}
if(staffcategory != null) {
newStaff.addElement("staffcategory").addText(staffcategory);
}else {
newStaff.addElement("staffcategory").addText("");
}
if(staffinvolvement != null) {
newStaff.addElement("staffinvolvement").addText(staffinvolvement);
}else {
newStaff.addElement("staffinvolvement").addText("");
}
if(areasofresearch != null) {
newStaff.addElement("areasofresearch").addText(areasofresearch);
}else {
newStaff.addElement("areasofresearch").addText("");
}
if(qualifications != null) {
newStaff.addElement("qualifications").addText(qualifications);
}else {
newStaff.addElement("qualifications").addText("");
}
if(citizenship != null) {
newStaff.addElement("citizenship").addText(citizenship);
}else {
newStaff.addElement("citizenship").addText("");
}
if(staffparticulars != null) {
newStaff.addElement("staffparticulars").addText(staffparticulars);
}else {
newStaff.addElement("staffparticulars").addText("");
}

}

else
{
// we locate the project that we are going to modify
Element staff = (Element) doc.selectSingleNode( "//staff-list/staff[@id=" + id + "]" );
// and then we modify the values
staff.selectSingleNode( "name" ).setText(name);
staff.selectSingleNode( "school" ).setText(school);
staff.selectSingleNode( "centre" ).setText(centre);
staff.selectSingleNode( "staffcategory" ).setText(staffcategory);
staff.selectSingleNode( "staffinvolvement" ).setText(staffinvolvement);
staff.selectSingleNode( "areasofresearch" ).setText(areasofresearch);
staff.selectSingleNode( "qualifications" ).setText(qualifications);
staff.selectSingleNode( "citizenship" ).setText(citizenship);
staff.selectSingleNode( "staffparticulars" ).setText(staffparticulars);
}
// write the file:
java.io.FileWriter outWriter = new java.io.FileWriter( "ViewStaff_list.jsp" );
doc.write( outWriter );
outWriter.close();
out.write("\r\n\r\n");
out.write("<html>\r\n ");
out.write("<head>\r\n ");
out.write("<title>Success");
out.write("</title>\r\n ");
out.write("</head>\r\n ");
out.write("<body background = \"brown.jpg\">");
out.write("<font size=\"7\">\r\n");
out.write("<center>\r\n");
out.write("<br>\r\n");
out.write("<br>\r\n Staff list successfully saved.\r\n\r\n");
out.write("<br>\r\n ");
out.write("<hr>\r\n");
out.write("<br>\r\n ");
out.write("<a href=\"ViewStaff_list.jsp\">Back to Staff List");
out.write("</a>      \r\n ");
out.write("<a href=\"EditStaff.jsp\">Add another record");
out.write("</a>\r\n");
out.write("<br>\r\n");
out.write("<hr>");
out.write("</font>\r\n ");
out.write("</body>\r\n");
out.write("</html>");
} catch (Throwable t) {
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
out.clearBuffer();
if (pageContext != null) pageContext.handlePageException(t);
} finally {
if (_jspxFactory != null) _jspxFactory.releasePageContext(pageContext);
}
}
}
Thanx..
 
William Brogden
Author and all-around good cowpoke
Rancher
Posts: 13078
6
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You should never put code like that in a JSP - it is crying out to be put in a JavaBean. The bean should check every parameter to ensure that the form field was in fact filled out.
There are multiple places where you just assume a parameter or an Element was located - each a potential NullPointerException cause.
I also see multiple places where you catch an exception but don't do anything with the information.
Bill
 
fiza jay
Greenhorn
Posts: 10
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
so how do i debug this error??? Im not so gd in Java and JSP.. Anybody can at least give a hint on how i debug this error... Coz i have no clue in this.. I do not also know how m i suppose to do with the catch exception..
Thanx..
 
William Brogden
Author and all-around good cowpoke
Rancher
Posts: 13078
6
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You appear to be trying to run before you can walk. I suggest you work through a good beginner's book on Java - especially the section on exceptions.
Next, try to create a SIMPLE application using servlet or JSP, with just one request parameter. Learn how to use the logging capability and error reporting capability of your servlet/JSP environment. Learn how JavaBeans are used with JSP.
Once you get something simple working, add complexity slowly - for example, just echo back the contents of a Form before you try to save the contents to XML.
Bill
 
Mike Curwen
Ranch Hand
Posts: 3695
IntelliJ IDE Java Ubuntu
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Also, stack traces normally contain line numbers.

The *first* thing you do is find the line that throws the NullPointerException
 
fiza jay
Greenhorn
Posts: 10
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
now there's no error as in the NullPointerException but now it just wont save the record that i have added. What i mean is that once i have added a record, it says record added but when i view all the records, there isnt any record added. Same goes for the editing and deleting. It just didnt save inside my xml database.
Why is that so???
Thanx in advance
 
William Brogden
Author and all-around good cowpoke
Rancher
Posts: 13078
6
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
What is it that "says" record added? Did you catch any possible exceptions and record the results? In your earlier code it looked like you were just writing to a JSP file - not a database - is that still the case?
Bill
 
fiza jay
Greenhorn
Posts: 10
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
what it mean by record added is dat: on my web page rite, there will be an adding form so that i can insert a new record, but when i click on the submit button, my web page will show it has been added.
But inside my xml, doesnt have the record which i have added...
 
William Brogden
Author and all-around good cowpoke
Rancher
Posts: 13078
6
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You didn't answer my question about catching Exceptions.
Bill
 
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!