Greetings, (my code is below)
I developed a very simple JSP site for my client so people may purchase Beach Clothing
over the Internet. I am receiving an exception from this line: for (int x = 0; x <
chkValues.length; ++x) {
Here is the logic of the site
INDEX Page: (search on item color)-->
SEARCH Page: (Lists records from HTML page search. Click on check box in front of each
resulting record you want to view detail on)
INVOICE Page: Displays multiple repeating records (all records that were check-marked
on search page) AND THEN allows you to sort them using two drop down list boxes, one
with column names, the other sort order (ASC DESC)
Everything is functioning well, except when they press SORT it appears that an
exception is being caused by a null value resulting
from: " request.getParameterValues " not retrieving a value:
String chkValues[]=request.getParameterValues("valueCheckbox");
and then:
" for (int x = 0; x < chkValues.length; ++x) { "
has no string assigned to chkValues to work with, so AN EXCEPTION IS THROWN.
Does anyone see the mistake in how the INVOICE page is written?
I am new at this, and do not understand what the issues are and what is the mistake in
the logic of the page?
The invoice page is below, as are the Index and Search Pages:
Index-->Search-->Invoice
--------------------
ERROR CODE:
500 Internal Server Error
/jserv/Invoice3.jsp:
java.lang.NullPointerException
at
jrun__jserv__Invoice32ejsp13._jspService(jrun__jserv__Invoice32ejsp13.java:7
5)
--------------------
INVOICE PAGE (last page):
<%@page language="java" import="java.sql.*"%>
<%@ include file="../Connections/connBeachwear.jsp" %>
<%
String rsBeachwear__varCheckbox = "1";
if (request.getParameter ("valueCheckbox") !=null)
{rsBeachwear__varCheckbox = (String)request.getParameter ("valueCheckbox")
;}
%>
<%
//NEW SORT VARIABLES:
String rsBeachwear__name = "ID";//default sort value
if (request.getParameter ("order") !=null) {rsBeachwear__name =
(String)request.getParameter ("order");}
String rsBeachwear__sort = "ASC";//default sort value
if (request.getParameter ("sort") !=null) {rsBeachwear__sort =
(String)request.getParameter ("sort");}
%>
<%
Driver DriverrsBeachwear =
(Driver)Class.forName(MM_connBeachwear_DRIVER).newInstance();
Connection ConnrsBeachwear =
DriverManager.getConnection(MM_connBeachwear_STRING,MM_connBeachwear_USERNAM
E,MM_connBeachwear_PASSWORD);
String chkValues[]=request.getParameterValues("valueCheckbox");
StringBuffer prepStr=new StringBuffer("SELECT ID, Item, Color, Size FROM
Beachwear WHERE ID=");
for(int x = 0; x < chkValues.length; ++x) {
prepStr.append(chkValues[x]);
if((x+1)<chkValues.length){
prepStr.append(" OR ID=");
}//end if
}//end for loop
prepStr.append(" ORDER BY '%" + rsBeachwear__name + "%' '%" +
rsBeachwear__sort + "%'"); //NEW SQL SORT CODE:
PreparedStatement
StatementrsBeachwear=ConnrsBeachwear.prepareStatement(prepStr.toString());
ResultSet rsBeachwear = StatementrsBeachwear.executeQuery();
Object rsBeachwear_data;
%>
<title>Beachwear Title</title>
<body bgcolor="#FFFFFF">
<p> </p>
<p> </p>
<p><br>
INVOICE<br>
</p>
<%//FORM "GET" METHOD<%>
<form name="form1" method="get" action="Invoice3.jsp">
<p><br>
</p>
<%while(rsBeachwear.next()){ //NEW LOOP; RELEVANT, NOT POINTLESS %>
<table width="75%" border="1">
<tr>
<td width="13%">ID:</td>
<td width="87%"><%=(((rsBeachwear_data =
rsBeachwear.getObject("ID"))==null ||
rsBeachwear.wasNull())?"":rsBeachwear_data)%></td>
</tr>
<tr>
<td width="13%">ITEM:</td>
<td width="87%"><%=(((rsBeachwear_data =
rsBeachwear.getObject("Item"))==null ||
rsBeachwear.wasNull())?"":rsBeachwear_data)%></td>
</tr>
<tr>
<td width="13%">COLOR:</td>
<td width="87%"><%=(((rsBeachwear_data =
rsBeachwear.getObject("Color"))==null ||
rsBeachwear.wasNull())?"":rsBeachwear_data)%></td>
</tr>
<tr>
<td width="13%">SIZE:</td>
<td width="87%"><%=(((rsBeachwear_data =
rsBeachwear.getObject("Size"))==null ||
rsBeachwear.wasNull())?"":rsBeachwear_data)%></td>
</tr>
</table>
<%
}
%>
<p> </p>
<br>
<table width="54%" border="1">
<tr>
<td width="29%">
<div align="center">Parameter </div>
</td>
<td width="28%">
<div align="center">1</div>
</td>
<td width="43%">
<div align="center">2</div>
</td>
</tr>
<%//TWO NEW PULL-DOWN MENUS FOR "ORDER BY" SQL SORT%>
<tr>
<td width="29%">
<div align="center">
<input type="submit" value="Sort Now">
</div>
</td>
<td width="28%">
<div align="center">
<select name="order" size="1">
<option value="ID" selected>ID</option>
<option value="Item">Item</option>
<option value="Color">Color</option>
<option value="Size">Size</option>
</select>
</div>
</td>
<td width="43%">
<div align="center">
<select name="sort" size="1">
<option value="ASC" selected>Ascending</option>
<option value="DESC">Descending</option>
</select>
</div>
</td>
</tr>
</table>
</form>
<%
rsBeachwear.close();
ConnrsBeachwear.close();
%>
----------------------------------
INDEX PAGE (first page):
<title>Beachwear Title</title>
<body bgcolor="#FFFFFF">
<p> </p>
<form name="form1" method="get" action="jserv/Search3.jsp">
<table width="52%" border="1">
<tr>
<td width="20%">Enter Color:</td>
<td width="80%">
<input type="text" name="txtColor" size="30" maxlength="20">
</td>
</tr>
</table>
<p>
<input type="submit" name="Submit" value="Color">
</p>
</form>
<p> </p>
-------------------------------
SEARCH PAGE (second page):
<%@page language="java" import="java.sql.*"%>
<%@ include file="../Connections/connBeachwear.jsp" %>
<%
String rsBeachwear__varColor = "%";
if (request.getParameter ("txtColor") !=null) {rsBeachwear__varColor =
(String)request.getParameter ("txtColor");}
%>
<%
Driver DriverrsBeachwear =
(Driver)Class.forName(MM_connBeachwear_DRIVER).newInstance();
Connection ConnrsBeachwear =
DriverManager.getConnection(MM_connBeachwear_STRING,MM_connBeachwear_USERNAM
E,MM_connBeachwear_PASSWORD);
PreparedStatement StatementrsBeachwear =
ConnrsBeachwear.prepareStatement("SELECT ID, Item, Color, Size FROM
Beachwear WHERE Color LIKE '%" + rsBeachwear__varColor + "%';");
ResultSet rsBeachwear = StatementrsBeachwear.executeQuery();
boolean rsBeachwear_isEmpty = !rsBeachwear.next();
boolean rsBeachwear_hasData = !rsBeachwear_isEmpty;
Object rsBeachwear_data;
int rsBeachwear_numRows = 0;
%>
<%
int Repeat1__numRows = 10;
int Repeat1__index = 0;
rsBeachwear_numRows += Repeat1__numRows;
%>
<title>Beachwear Title</title>
<body bgcolor="#FFFFFF">
<p> </p>
<p>
<form name="form2" method="post" action="Invoice3.jsp">
<table width="75%" border="1">
<% while ((rsBeachwear_hasData)&&(Repeat1__numRows-- != 0)) { %>
<tr>
<td width="18%"><%=(((rsBeachwear_data =
rsBeachwear.getObject("ID"))==null ||
rsBeachwear.wasNull())?"":rsBeachwear_data)%></td>
<td width="20%"><%=(((rsBeachwear_data =
rsBeachwear.getObject("Item"))==null ||
rsBeachwear.wasNull())?"":rsBeachwear_data)%></td>
<td width="21%"><%=(((rsBeachwear_data =
rsBeachwear.getObject("Color"))==null ||
rsBeachwear.wasNull())?"":rsBeachwear_data)%></td>
<td width="5%"><%=(((rsBeachwear_data =
rsBeachwear.getObject("Size"))==null ||
rsBeachwear.wasNull())?"":rsBeachwear_data)%></td>
<td width="16%">
<input type="checkbox" name="valueCheckbox"
value="<%=(((rsBeachwear_data = rsBeachwear.getObject("ID"))==null ||
rsBeachwear.wasNull())?"":rsBeachwear_data)%>" checked>
</td>
</tr>
<%
Repeat1__index++;
rsBeachwear_hasData = rsBeachwear.next();
}
%>
</table>
<p>
<input type="submit" name="Submit" value="Submit">
</p>
</form>
<%
rsBeachwear.close();
ConnrsBeachwear.close();
%>
===========================================================================
To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST".
For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST DIGEST".
Some relevant FAQs on JSP/Servlets can be found at:
http://archives.java.sun.com/jsp-interest.html
http://java.sun.com/products/jsp/faq.html
http://www.esperanto.org.nz/jsp/jspfaq.jsp
http://www.jguru.com/faq/index.jsp
http://www.jspinsider.com