这些标签必须嵌套在html:form中使用
html:checkbox
checkbox的值由value属性指定。
当提交表单时复选框被选中,则传递此参数,若没有被选中则不传递此参数。
eg: <html:checkbox property="mathScore" value="98"> 参数即为:mathScore=98
由此产生一个问题就是如果提交表单时checkbox未被选中则Form Bean里与此复选框对应的字段的值将仍然保存着。解决办法是在Form Bean里的reset()方法里对checkbox字段进行重置。即在reset()方法里设置当checkbox未被选中时表示的值。
eg:
jsp里:
<html:checkbox property="toUpperCase" value="true">转换成大写
Form Bean里:
reset(…){
toUpperCase=false//初始状态为:不选中
}
若FormBean里的值与checkbox标签的value值相等则选中,否则当FromBean里的对应值为true或yes或on时,复选框被选中否则不选中,这同时产生一个问题:
如上例做如下改动:
jsp里:
<html:checkbox property="toUpperCase" value="false">不转换成大写
Form Bean里:
reset(…){
toUpperCase=true//初始状态为:选中
}
初始状态下toUpperCase=true时,因为value跟FormBean里的toUpperCase值不等,则考虑FormBean的值,因为为true,所以复选框是处于被选中状态。
当保持选中状态时提交表单,则FormBean里的toUpperCase=false,因为value跟toUpperCase值相等,则复选框再次被选中。
也就是说不管FormBean里的toUpperCase的值是什么,JSP页面上的checkbox始终处于被选中状态。
处理办法是checkbox的值只能设置为true或yes或on。
checkbox一般用于真假判断,他的值一般是true/fasle yes/no on/off,若要表示其他值可以用multibox
如果check没有被选中
html:multibox
其对应的FormBean里的属性可以定义为数组,如:
String[] multibox1 = new String[0];
html:radio
可以在对应的FormBean里的reset()方法里设置初始值,若没有设置则所有radio都处于未选择状态
评论