struts2关于checkbox处理的一个bug

本文探讨了Struts2框架处理Checkbox元素时的不同行为。当Checkbox对应的后端属性为String类型时,从第二个选中项开始,每个值前面会多出一个空格;而设置为String[]类型时则不会出现此问题。文章建议使用String[]类型来避免该现象,并给出了相应的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jsp页面

<input type="checkbox" name="cks" value="1"/>

 

<input type="checkbox" name="cks" value="2"/>

 

<input type="checkbox" name="cks" value="3"/>

 

如果当前cks在action中被被定义为String类型,即 private Stirng cks;  public getCks() {};public setCks() {};

全选checkbox后,提交后发现cks获取的数据为:1, 2, 3;在后台程序中如果我们使用split分割字符串,则获得数组为["1"],[" 2"],[" 3"],于实际传递的值发生变化。

 

如果当前cks在action中被被定义为String[]字符串数组类型,即 private String[] cks,则当前问题不存在。

 

结论:我们可以发现  struts2在处理checkbox属性时,如果当前属性定义为字符串,则从第二个选中checkbox开始,其值被莫名的添加了一个空格做前导;如果当前属性定义为字符串数组则不存在这样的问题

 

建议:页面存在checkbox的地方请将映射字段类型定义为String[]字符串数组类型,如果确实定义为String的,请用trim()去掉分割后字符串存在的空格。

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值