没选的话值是null,太小气了。20分

解决方案 »

  1.   

    特殊情況下你可以用一個hidden來同步保存checkbox的值<input type=hidden name=myHidden>最後取hidden的值去操作即可
      

  2.   

    用hidden的方法我试了,但我觉得没必要多此一举,如果没选中也能传值的话。
      

  3.   

    估计这个问题要去找比尔.盖茨让他在开发一个jsp出来
      

  4.   

    没选是null,你别用数组接就是了。
      

  5.   

    换个思路:既然知道没选的时候其值为null,为什么不根据这个自己在接受页面做处理呢?
    String[] sec=request.getParameterValues("sec");
    if(sec==null){
       //abc=0;
    }
      

  6.   

    我的意思是:
    这个值根本就传不过来,提示出错是空指针,不是null,这是两玛事啊。
      

  7.   

    怎会,即使没有值request.getParameterValues()也不会产生空指针,而是他返回的值是null,不信,你可以用下面的代码新建一个文件,然后直接浏览该文件,看会不会出错
    <%
    String[] sec=request.getParameterValues("sec");
    if(sec==null)out.println("I am null");
    %>
      

  8.   

    只有当没有值传递过来而你又使用了sec才会产生空指针
      

  9.   

    freefalcon(心宇) :
    我试了下这个方法:
    <input type="checkbox" name="sec"  value="1" checked>
    结果就传来了正确的值。当去掉checked时,提示出错是空指针
      

  10.   

    奇怪,真的不会有问题呀,你再试一下下面的代码,应该是其它地方有问题吧
    a1.jsp
    <form action=a2.jsp method=post>
    <input type="checkbox" name="sec"  value="1" checked>
    <input type=submit>
    </form>
    a2.jsp
    <%
    String[] sec=request.getParameterValues("sec");
    if(sec==null)out.println("i am null");
    else out.println(sec[0]);
    %>
      

  11.   

    yes! it's parameters is null!
      

  12.   

    : freefalcon(心宇) ,我试了,还是空指针,干脆把我的代码拿来看一下吧
    <% if(sec.equals("1")){    %>
           <input type="checkbox" checked name="sec"  value="1">td>
     <% }else if(sec.equals("0")){ %>
           <input type="checkbox" name="sec"  value="0">td>
    <% } %>
    提交后很简单:
         String[] security=request.getParameterValues("sec");
         out.println("<script>alert('"+security[0]+"');</script>"); 
     问题就出在只能提交被选中了的。
         
           
      

  13.   

    你需要什么样的结果?换一种方式可以做到。
    你用数组接,永远都接不到没选中的。
    如果你是单个地去接,可以接到null。
      

  14.   

    哎,你怎么不按我说的做呢,当checkbox未被选中时,获得的值确实是null,即security为null,但这样并不会产生“空指针错误”,而产生错误的原因是你在security为null时,你引用了security[0],这样当然后产生空指针了,照下面这样改一下就行了
    <%
    String[] security={"0"};//这里初始化成你想要的数据
    if(request.getParameterValues("sec")!=null)//不为null时才赋值
       security=request.getParameterValues("sec");
    out.println("<script>alert('"+security[0]+"');</script>"); 
    %>
    另外你的第一段代码也可改成
    <input type="checkbox" name="sec"  value="<%=sec%>" <%if(sec.equals("1"))out.println(" checked");%> >
      

  15.   

    roby_tao() 
    你的代码,不正确呀,
    security为空的时候,是不能对它进行应用的呀,
    String[] security=request.getParameterValues("sec");
    if (sec!=null){
         out.println("<script>alert('"+security[0]+"');</script>"); 
    }
    else
    {
    out.println("<script>alert('你还没选择呢');</script>"); 
    }
      

  16.   

    同意楼上的意见,空指针错误是因为你的sec为null的时候用了equals方法,在应用对象的某一个方法的时候要看这个对象是否已经正确的实例化了—————————————————————————————————
    ibeyond.org正在建设中,即将推出WebAnyWhere测试版,敬请关注。
    WebAnyWhere可以将您的顶级域名解析到您的动态ip上去,让您拥有自己的互联网主机。
      

  17.   

    : freefalcon(心宇) 
    我明白意思了,用了一下也正确了。新问题又出来了:
    只能传过来以前就checked的是1,取消了他的选中传来的就是0。
    如果以前就没有被选中,再选中的话,还是传来的是0。
    这是怎么回事?
      

  18.   

    这是你的程序自己设置的呀,你写的就是最初状态未选中时,其值为0,选中时其值为1,这个值将不再改变,接受端只能判断有无数据传过来,所以如果你想实现选中后值为1,未选中值为0,有两种方法
    1。在客户端用javascript实现,如下
    <input type="checkbox" name="sec"  value="<%=sec%>" <%if(sec.equals("1"))out.println("checked");%> onclick="javascript:this.value=this.checked?1:0">
    接收页面仍为
    <%
    String[] security={"0"};//这里初始化成你想要的数据
    if(request.getParameterValues("sec")!=null)//不为null时才赋值
       security=request.getParameterValues("sec");
    out.println("<script>alert('"+security[0]+"');</script>"); 
    %>
    2。在接收端做处理
    发送端不变,接受端根据是否为null再赋不同的值
    <%
    String[] security={"0"};//这里初始化成你想要的数据
    if(request.getParameterValues("sec")!=null)//不为null时才赋值
       security[0]="1";
    out.println("<script>alert('"+security[0]+"');</script>"); 
    %>
    另外,你为什么要用数组呢,如果只有一个checkbox的话,用String request.getParameter()就行了