想搞个级联下拉菜单,出了这个错误,请帮帮忙!代码如下 :<%@ page contentType="text/html; charset=gbk" language="java" import="java.sql.*"  %>
<jsp:useBean id="joyrisingbean" scope="page"  class="db.lxtconndb"/>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>搜索纪念馆</title>
<style type="text/css">
<!--
.sssy {
 font-size: 12px;
 font-style: normal;
 
}
-->
</style>
</head><body bgcolor="#F0F8FF" >
<form id="form1"  name="form1"  method="post" action="b.jsp" >
    <span class="sssy">站内纪念馆搜索:
    <select name="ssxx"  onchange="onselectxx()"  id="ssxx"  size="1">
    <option value="按纪念馆名" >按纪念馆名</option>
    <option value="按纪念馆号"selected>按纪念馆号 </option>
    <option value="按建馆人名">按建馆人名</option>
    <option value="按用户编号">按用户编号</option>
    <option value="按省份">按省份</option>
    <option value="按纪念园区名">按纪念园区名</option>
    <option value="按纪念园区号">按纪念园区号</option>
    </select>
    <select name="flxx" size="1" onload="initIDselect()" id="flxx">
    </select>
    <input type="submit" name="sumbit" id="sumbit" value="GO>>>" accesskey="s" />  
  <br />
  </form><%  String sql = "SELECT * from  jnr"; 
 ResultSet rs = joyrisingbean.executeQuery(sql);//注:编译joyrisingbean正常
 
    
%>
<script language="javascript">
function initIDselect(){var flxx=document.getElementById('flxx');
<%while(rs.next()){%>
flxx.options.add(new Option(<%=rs.getInt("jng_id")%>,0));
<%}
rs.close();
rs=null;
%>
 
}//end of function initIDselect()///////////////////////////////////////////
///////////改变选项时装入不同的选项值///////////
function onselectxx()
{
var flxx=document.getElementById('flxx');
flxx.options.length=0; //清除原有选项;
var ssxx=document.getElementById('ssxx');
var ssxxselectedtext=ssxx.options[ssxx.selectedIndex].text;
<%  
 
rs.beforeFirst();while(rs.next()){%>
switch (ssxxselectedtext){
case '按纪念馆号':
 flxx.options.add(new Option(<%=rs.getInt("jng_id")%>,0));
break;
case'按建馆人名':
 flxx.options.add(new Option(<%=rs.getString("user_name")%>,0));
break;
case '按纪念馆名':
 flxx.options.add(new Option(<%=rs.getString("reg_gm")%>,0));
break;case'按纪念园区名':
 flxx.options.add(new Option(<%=rs.getString("reg_yqm")%>,0));
 break;
case'按纪念园区号':
 flxx.options.add(new Option(<%=rs.getInt("yq_id")%>,0));
case'按省份':
 flxx.options.add(new Option(<%=rs.getString("jnr_city")%>,0));
break;
default:
}//end switch
<%}%>
 //end while(rs.next())
<%rs.close();
rs=null;
%>
}//end funtion onselectxx()
</script>
</body>
</html>
错误提示:java.lang.NullPointerException
java.lang.NullPointerException
at _jsp._tmpzydr33yf2o__jsp._jspService(TMPzydr33yf2o.jsp:72)
at _jsp._tmpzydr33yf2o__jsp._jspService(_tmpzydr33yf2o__jsp.java:28)
其中(_tmpzydr33yf2o__jsp.java:28)的代码是_jspService(request, response, pageContext, _jsp_application, session, _jsp_state);可能是对应joyrisingbean中的数据库连接代码。但是在编译joyrisingbean时没有错了,为什么这里会错?又该如何解决呢?请指教!!!非常感谢! 
 

解决方案 »

  1.   

    你的rs取道值了吗?。是不是什么地方又给赋值成NULL了 
      

  2.   

    <%while(rs.next()){%> 
    flxx.options.add(new Option( <%=rs.getInt("jng_id")%>,0)); 
    <%} 
    rs.close(); 
    rs=null; 
    你上面取得了结果集,在这里又把他清空,肯定会出现空指针啊
      

  3.   

    rs.close(); 
    rs=null; 
    支持楼上的!
      

  4.   

    首先感谢大家!
    我把下面的函数中rs.close(); 
    rs=null;删掉(如6、7楼所说),结果还是一样(原来是没有这两行的,后来找不到错在哪,就在每个函数中都连接数据库,然后关闭,发现结果都是一样,又删掉了,就是忘了删这两行)。
    请大家再帮我找找。(编译连接数据库的javabean没有错误)
    function initIDselect(){ var flxx=document.getElementById('flxx'); 
    <%while(rs.next()){%> 
    flxx.options.add(new Option( <%=rs.getInt("jng_id")%>,0)); 
    <%} 
    rs.close(); 
    rs=null; 
    %> 
      

  5.   

    很奇怪,今天什么也没改,上面说的错误没有了,换成了另一错误:行:102,错误:语法错误。
    102行是while(rs.next()),这一行我也没找到语法错在哪?还请指教!
      

  6.   

    语法错误是在下面这个函数里的while(rs.next()){ ,我把前面一行rs.beforeFirst(); 
    去掉,就没报错误了,只是得不到结果(因为前面数据库指针已指到最后一行的后面了),请
    高手指教!
    function onselectxx() 

    var flxx=document.getElementById('flxx'); 
    flxx.options.length=0; //清除原有选项; 
    var ssxx=document.getElementById('ssxx'); 
    var ssxxselectedtext=ssxx.options[ssxx.selectedIndex].text; 
    <%  rs.beforeFirst(); while(rs.next()){ 
      

  7.   

    initIDselect() 函数中
    <%} 
    rs.close(); 
    rs=null; 
    %> 和onselectxx() 函数中
    <%}%> 
    //end while(rs.next()) 
    <%rs.close(); 
    rs=null
    %> 2处都是rs=null,试着将这2处注释掉,再运行看看。
      

  8.   

    感谢大家!
    关于语法错误,我按照13、14楼的说法,把rs.close(); 
    rs=null; 都注释掉了,可还是报一样的错误啊!下面再粘贴一遍我的原代码,请大家指教!<%@ page contentType="text/html; charset=gbk" language="java" import="java.sql.*,java.util.*"%>
    <jsp:useBean id="joyrisingbean" scope="page"  class="db.lxtconndb"/>
    <!--DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"-->
    <html>
    <head>
    <!--meta http-equiv="Content-Type" content="text/html; charset=gbk" /-->
    <title>搜索纪念馆</title>
    <style type="text/css">
    <!--
    .sssy {
    font-size: 12px;
    font-style: normal;

    }
    -->
    </style>
    </head><body bgcolor="#F0F8FF" onLoad="initIDselect()">
    <form id="form1"  name="form1"  method="post" action="b.jsp" >
        <span class="sssy">站内纪念馆搜索:
        <select name="ssxx"  onchange="onselectxx()"  id="ssxx"  size="1">
        <option value="按纪念馆名" >按纪念馆名</option>
        <option value="按纪念馆号"selected>按纪念馆号 </option>
        <option value="按建馆人名">按建馆人名</option>
        <option value="按用户编号">按用户编号</option>
        <option value="按省份">按省份</option>
        <option value="按纪念园区名">按纪念园区名</option>
        <option value="按纪念园区号">按纪念园区号</option>
        </select>
        <select name="flxx" size="1"  id="flxx">
        </select>
        <input type="submit" name="sumbit" id="sumbit" value="GO>>>" accesskey="s" />  
      </span></form>
    <% 
    String sql = "SELECT * from  jnr"; 
    ResultSet rs = joyrisingbean.executeQuery(sql);%>
    <script language="javascript">
    function initIDselect(){
    var flxx=document.getElementById('flxx');
    <%rs.beforeFirst();
    while(rs.next()){
    %>
    flxx.options.add(new Option(<%=rs.getInt("jng_id")%>,0));
    <%}
    %>
    }
    function onselectxx(){var flxx=document.getElementById('flxx');
    flxx.options.length=0; //清除原有选项;
    var ssxx=document.getElementById('ssxx');
    var ssxxselectedtext=ssxx.options[ssxx.selectedIndex].text;<% rs.beforeFirst();
    while(rs.next()){ %>switch (ssxxselectedtext){
    case'按纪念馆号':
    flxx.options.add(new Option(<%=rs.getInt("jng_id")%>,0));
    break;
    case '按建馆人名' :
    flxx.options.add(new Option(<%=rs.getString("user_name")%>,0));
    break;
    case '按纪念馆名':
    flxx.options.add(new Option(<%=rs.getString("reg_gm")%>,0));
    break;case '按纪念园区名':
    flxx.options.add(new Option(<%=rs.getString("reg_yqm")%>,0));
    break;
    case '按纪念园区号':
    flxx.options.add(new Option(<%=rs.getInt("yq_id")%>,0));
    case '按省份':
    flxx.options.add(new Option(<%=rs.getString("jnr_city")%>,0));
    break;
    default:
    }//end switch
    <%}
     //end while(rs.next())
    //rs.close();
    //rs=null;%>
    }//end funtion onselectxx()
    </script>
    </body>
    </html>
      

  9.   

    请大家指教!急啊!是不是rs.beforeFirst(); 语句有什么限制啊(不能使用两次)?或者哪位大哥大姐有替代的方法,请指教!非常感谢!!!