谁对struts的ModelDriven比较了解的

plugin 发布于 2014/08/08 20:40
阅读 140
收藏 1
当拦截器拦截到action时,会检查他是不是实现了ModelDriven接口,如果实现了的话,就把他getModel的返回值压入值栈里去。现在我有个问题,如果我让getModel的返回值每次都是新new的一个和返回值是初始化时new的那个在值栈上没有任何区别,但是在execute调用的时候,如果是每次都new的话,就报空指针错误。能不能跟我将一下具体原因
加载中
0
zhpooer
zhpooer

使用方法错误, getModel 应该是返回初始化new的那个对象, 而不是每次都new, 因为每次访问 action 都会重新生成以一个Action 对象. 至于为什么会报空对象, 还真分析不出来, 得有 错误信息 分析啊!!! 

plugin
plugin
麻烦你看下我回复给一楼仁兄的内容
0
文心雕码
文心雕码

你的源代码怎么写的?

zhpooer
zhpooer
回复 @plugin : http://zhpooer.github.io/img/struts_core.png 一图胜千语, 剩下的事情就是看源代码了, struts 各种功能的核心可以说是 拦截器实现的. 你可以去源代码里查看 default-stack 的配置, 找到你想要了解的拦截器
plugin
plugin
1.正确方法,只是初始化时new一次,getModel返回这个初始化的 2,我实验的方法,初始化时new一个,但是getModel返回值也是new一个。 现在这两种情况都能在值栈里有一个对象。我之所以有这个想法是看到网上的一篇文章说,拦截器会把getModel返回值压入值栈,能跟我讲讲整个流程吗,从客户端传递参数,struts帮我们组合赋值,调用getModel,execute等等的先后顺序
返回顶部
顶部