转:http://www.cnblogs.com/guanghuiqq/archive/2012/08/24/2654300.html

实现了ModelDriven就必须实现getModel这个方法,该方法返回的是你的ModelDrivern泛型中设定的实体类。其实是为了实现代码的重用,不要再定义一次你在数据访问层定义的属性了,直接用那个类就行了。不过有时候也不是很需要这个东西,比如只有一两个表单域的时候
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顺序修改二者位置即可

最新文章

  1. EmguCV(OpenCV)实现高效显示视频(YUV)叠加包括汉字
  2. pentaho cde 选择性的显示多列数据
  3. C语言通用双向循环链表操作函数集
  4. Android Service 文档
  5. centos6.5安装mysql记录
  6. jmeter中线程之间传递参数
  7. 企业用户2T(含秒传),普通用户20G
  8. matlab的&和&&操作
  9. [改善Java代码]自由选择字符串拼接方法
  10. inux 下c/c++ 连接mysql数据库全过程-----已经通过验证
  11. Secure CRT 如何连接虚拟机里面的CentOS系统 当主机没有网的时候 作者原创 欢迎转载
  12. 如何在 Swift 中优雅地处理 JSON
  13. Android酷炫有用的开源框架
  14. Socket 聊天工具
  15. Could not resolve placeholder 'IMAGE_SERVER_URL' in string value "${IMAGE_SERVER_URL}"
  16. 小程序问题集:保存失败:Error: ENOENT: no such file or directory, open
  17. ruby数组操作方法汇总
  18. MFC修改对话框标题
  19. Django REST framework 总结(附源码剖析)
  20. 【Git】Git与GitHub 入门

热门文章

  1. 使用PaxScript为Delphi应用增加对脚本的支持
  2. WebStorm编辑器
  3. 数据结构学习笔记——顺序数组1
  4. 在linux服务器中网站环境搭建好了.能看到首页,其他页面404解决
  5. java 轻量级 RestClient
  6. Linux 线程Demo
  7. delphi基础篇之数据类型概论
  8. arttemplate02
  9. PAT_A1130#Infix Expression
  10. opencv 打开摄像头(c++)