个方法可能被好多人遗忘,但是它确实能解决我们棘手的问题.


我们写的FormBean必须实现ActionForm的超类,reset方法就是定义在这个超类中的.打开源代码可以看到它实际没做什么. 你要使用它,必须自己实现相应的逻辑.

reset方法的调用时间是在ActionServlet给它重新赋值的时候.也就是说,当ActionServlet把View层的数据组装好,给FromBean的各个属性赋值之前,会先调用reset方法,然后ActionServlet再把页面的值赋上.

在处理页面的checkbox的时候,reset方法的作用就表现出来了. 页面上的checkbox在未被选中的时候是不被提交的,在新增的时候还好,你可以通过这个属性是否为null判断这个checkbox是否被选中,但是在修改操作的时候, 如果之前checkbox是被选中的,但是修改的时候你取消了选中, 提交的时候,那么FormBean中的这个属性值就不会被覆盖,还是选中状态的值! 这个时候我们覆写reset方法,就可以解决这个问题.

例如:

是否显示:

FormBean中的reset()可以这样:

public void reset(ActionMapping arg0, HttpServletRequest arg1) {
super.reset(arg0, arg1);
this.isDiplay="false";
}

在每次组装数据前,reset都会把isDiplay置为false,如果页面上被选中,就会再次被设置为true, 如果未被选中还会保持false !

转载于:https://www.cnblogs.com/dafa/archive/2012/12/26/2834410.html

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐