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()去掉分割后字符串存在的空格。