众所周知,在使用struts2时,所写的逻辑方法都是无参数的,所以的参数都是写在action内部的。如果一个action方法过多,而每个方法所使用的参数都不尽相同时,就会造成一个action内参数过多,且每个参数都有get/set,造成程序混乱,并且在可读性和使用上都不太方便。因为,你不知道你所调用的方法使用了哪些参数,而这个方法会返回哪些结果,在界面上哪些get对象是可以使用的。
那么,能否直接在方法上使用参数呢,就像在action里面一样,直接注入,直接使用,并且没有副作用呢?你想像使用spring mvc甚至更好的方式(无注解)使用struts2吗?这种想法是可以滴,当然现有的struts2是不支持滴。不过,我们可以修改之,让其支持。
本篇所使用以及参考的相关技术前提(可google之)
- struts2(xwork)中valueStack中的工作原理
- 在valueStack中CompoundRoot对象如何使用
- OGNL的propertyAccessor以及扩展
- struts2(xwork)所提供的ognl扩展
- 使用spring中所提供的localVariable访问方法参数信息
- java编译保存方法变量信息
本篇所提供内容工作前提
- action中每个方法名称惟一(不支持方法重载)
- java文件编译时保存了调试信息中的方法变量信息
本篇技术内容索引
- 获取方法信息
- 方法参数注入
- 方法调用调整
- Map及List泛型参数注入修正
- 方法内数据返回