项目中使用checkbox来做选择是否显示明细,Action里定义了boolean类型的属性接收数据,具体代码如下:
是否显示明细:<input type="checkbox" id="detail" name="detail" <c:if test="${detail}">checked="checked"</c:if> value="" />
action: private boolean detail = true;
但是发现一个问题:调试的时候detail的值一直都是true,前台的false传不过来,而值为true时可以传过来。当定义private boolean detail ;的时候就不存在这种问题,个人认为因为detail变量在创建Action实例的时候被初始化成了false,所以前台如果为false就不必要传给action。
于是添加了一个隐藏域控件解决了问题。
是否显示明细:<input type="checkbox" id="CBdetail" <c:if test="${detail}">checked="checked"</c:if> value="" />
<input type="hidden" name="detail" id="detail" value="${detail}">
<script type="text/javascript">
$(function(){
//是否显示明细
$("#CBdetail").click(function(){
$("#detail").val(this.checked);
});
});
</script>