关于struts2 中action 属性没有 se…

来源:互联网 发布:英文软件看不懂怎么办 编辑:程序博客网 时间:2024/06/05 21:13

以前经常看到网上和书上说,struts2action中的属性中要写相对应的setXXx,getXXx方法才能接收到网页中传来的参数!

无意中发现,属性没有写set get 方法,依然会注入值和取到值.

甚是不解,求助于网上依然没有得到解决!

花了点时间看了下源码!

发现:

struts2 参数拦载器在注入值的时候,有两种机制,(调用ognl)

 

这是OgnlRuntime 类中一段源码 hasSetMethod( context, target, targetClass,name ) || hasField( context, target, targetClass, name );

 

他会先查看你的action中有没有对应的方法,如果发现无此方法,他会利用第二种方法直接给属性覆值,而无需对应的set方法!(当然都是通过反射机制实现的)

0 0
原创粉丝点击