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