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>&nbsp;</p>
> <p>&nbsp;</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>&nbsp; </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>&nbsp;</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>&nbsp;</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>&nbsp;</p>
> <p>&nbsp;
> <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

Reply via email to