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

实现这两个接口ModelDriven<T>,Preparable有什么用?

时间:2015-01-06 19:42:23      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

Struts2的Action在实现com.opensymphony.xwork2.Preparable接口后,就可以重写prepare()方法
此时在Action中,prepare()方法的执行点是在:setXxx()和execute()的执行之前

比如需求:在执行Action的方法前,接收前台隐藏域传过来的值,再根据该值执行相应逻辑
如前台传过来ID,我们根据ID查找数据库对应的用户信息,再跳转到modify()中修改信息
但实际的运行过程中发现,通过Debug断点调试得知prepare()方法接收到的ID值是零
即前台隐藏域中的ID值没有传过来,事实上问题就出在默认的defaultStack拦截器栈上
其实defaultStack无法接收prepare()需要的数据,而应借助paramsPrepareParamsStack拦截器栈
事实上使用prepare拦截器之前,应先调用params拦截器,prepare()才能接收到表单数据
基于这个思路,于是可以通过各种手段将params拦截器放置在prepare拦截器之前即可
比如将defaultStack中的所有拦截器拷贝到struts.xml的我们自定义的myStack拦截器栈中
再按照paramsPrepareParamsStack拦截器栈中的params和prepare顺序修改二者位置即可

实现这两个接口ModelDriven<T>,Preparable有什么用?

标签:

原文地址:http://www.cnblogs.com/dashen/p/4206480.html

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