Try wrapping your for loop in "if(chkValues != null) {}". Remember if there
is no value for a parameter, getParameterValues returns null, not an empty
array.
(*Chris*)
----- Original Message -----
From: "Michael Pomeroy" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, December 03, 2001 6:13 AM
Subject: [JSP-INTEREST] Help! Problem in logic to pass values between pages
and then sort.
> 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
_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com
===========================================================================
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