码迷,mamicode.com
首页 > 其他好文 > 详细

为何使用二次参数拦截器栈,,为何需要在beforeInput() [即prepareInput(),本项目中分装为beforeInput()方法] 方法中获取employee

时间:2016-07-07 23:56:26      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:

因为,使用模型驱动,可以将不为空的employee压入栈顶,从而使得页面中以employee的属性名作为name的Struts标签元素能够获取到对应属性名的属性值,在点击修改后,可以实现回显.

具体的:

  由于modelDriven拦截器先于input()方法执行,因此需要将获取employee的方法提前到modelDriven拦截器之前,即在prepareInput()方法获取employee,此时employee就不空了,再在后面执行到modelDriven拦截器时就将employee对象放入栈顶,从而页面的中的各个元素可以直接获取employee中的get方法进行回显.

 

同理,在input界面还有一个隐藏域保存id,点击保存后向save发送请求.在第一个参数拦截器时,action在栈顶,它获取到id的值,将其设置到其属性中,然后在prepareSave()方法中,根据此不为空的id值调用get方法获取到对应id的employee对象,,然后在modelDriven拦截器处将employee压入栈顶,此时employee中存有数据库的原始值,,然后在来到第二次参数拦截器处,,获取到页面中的各个参数,,并将employee中的对应属性的属性值覆盖,,此时新旧数据在一起,,最后在save()方法中被保存写入数据库.避免了修改时只会保存填写值的属性的值,而原本有值但是未出现在编辑页面的属性被设置为空值的问题.

为何使用二次参数拦截器栈,,为何需要在beforeInput() [即prepareInput(),本项目中分装为beforeInput()方法] 方法中获取employee

标签:

原文地址:http://www.cnblogs.com/tabchanj/p/5651872.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!