checkbox如果没有选中,就不能传值吗?

这是你的程序自己设置的呀,你写的就是最初状态未选中时,其值为0,选中时其值为1,这个值将不再改变,接受端只能判断有无数据传过来,所以如果你想实现选中后值为1,未选中值为0,有两种方法
1。在客户端用javascript实现,如下
<input type="checkbox" name="sec"  value="<%=sec%>" <%if(sec.equals("1"))out.println("checked");%> οnclick="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()就行了.



当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");%> >

空指针错误是因为你的sec为null的时候用了equals方法,在应用对象的某一个方法的时候要看这个对象是否已经正确的实例化了

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值