struts中透过反射给领域对象赋值的方法
来源:互联网 发布:centos查看文件夹大小 编辑:程序博客网 时间:2024/06/06 01:29
struts中通过反射给领域对象赋值的方法
在struts的action中 总有这样的情况
用struts1.x是从from里取值 然后放入一个对象
用struts2.x是从this.里取值 然后放入一个对象
然后对这个对象进行操作
代码一大串都出现在action中
非常难看 代码质量下降 总是在拷贝粘贴代码
刚写了个类解决这个问题
多谢提醒 还是我孤陋寡闻了 一会去看看
在struts的action中 总有这样的情况
用struts1.x是从from里取值 然后放入一个对象
用struts2.x是从this.里取值 然后放入一个对象
然后对这个对象进行操作
代码一大串都出现在action中
非常难看 代码质量下降 总是在拷贝粘贴代码
刚写了个类解决这个问题
package com.harmony.themis.onDuty.web.action;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.HashMap;import java.util.Map;import com.harmony.themis.commons.web.action.BaseAction; public class ObjectSetValue { public Object getValueByAction(String returnClassName/*需要赋值的类的className*/, BaseAction baseAction/*你的action父类是谁这里就写谁 如果是自定义的这个参数类型得改 也可以是from*/) {Object obj = null;Map map = new HashMap();Method[] methodes = null;//将action中所有方法放入到map 中 这个map只为查询是否有get方法methodes = baseAction.getClass().getMethods();for(Method met : methodes){ map.put(met.getName(), "");}try { obj = Class.forName(returnClassName).newInstance();} catch (InstantiationException e) { e.printStackTrace();} catch (IllegalAccessException e) { e.printStackTrace();} catch (ClassNotFoundException e) { e.printStackTrace();}try {methodes = Class.forName(returnClassName).getMethods();} catch (SecurityException e) { e.printStackTrace();} catch (ClassNotFoundException e) { e.printStackTrace();}//循环类的所有方法for(Method met : methodes){ //如果是set方法if(met.getName().indexOf("set")==0){//得到除去set的属性名String metName = met.getName().replaceFirst("set", "");//得到get方法的方法名String getMetName = "get"+metName;try {//如果action中有对应的get方法if(map.containsKey(getMetName)){ //执行类的set方法 对应action的get方法 met.invoke(obj,new Object[] {baseAction.getClass().getMethod(getMetName, new Class[]{ }).invoke(baseAction, new Class[]{ }) } ) ; }} catch (IllegalArgumentException e) {e .printStackTrace();} catch (IllegalAccessException e) {e .printStackTrace();} catch (InvocationTargetException e) {e .printStackTrace();} catch (SecurityException e1) {e1.printStackTrace();} catch (NoSuchMethodException e1) { e1.printStackTrace();}}}return obj;}}
1 楼 congdepeng 2010-04-21
观望本贴
2 楼 weiqingfei 2010-04-21
Apache的commons-beanutils包里,有个叫做BeanUtils.copyProperties的方法。
3 楼 gulufather 2010-04-21
weiqingfei 写道
Apache的commons-beanutils包里,有个叫做BeanUtils.copyProperties的方法。
多谢提醒 还是我孤陋寡闻了 一会去看看
4 楼 nothink 2010-04-27
有样东西叫OGNL
0 0
- struts中透过反射给领域对象赋值的方法
- java使用反射给对象属性赋值的两种方法
- 利用反射给对象的属性赋值的例子
- 反射给没有set方法的属性赋值
- java中给集合赋值的方法
- C++中关于将对象赋值给整形的过程。
- Spring中,如何给对象的属性赋值?
- Spring中如何给对象的属性赋值
- 利用“反射”给类的属性赋值。
- jQuery中给form表单中action赋值的方法
- C# 反射给对象赋值遇到的问题——类型转换
- C# 反射给对象属性赋值遇到的问题——类型转换
- 反射给对象赋值遇到的问题——类型转换
- 反射给javabean赋值
- c# 利用反射动态给实体类对象赋值
- c# 利用反射动态给实体类对象赋值
- [深入学习C#]利用反射给对象赋值
- .net中如何给数据表实体类赋值的方法.
- eclipse中报 无法加载主类 问题 但在java命令能编译过
- JavaCC options
- Prime Ring Problem
- python TCPServer, StreamRequestHandler设置超时时间timeout
- 机器学习中的范数规则化之(二)核范数与规则项参数选择
- struts中透过反射给领域对象赋值的方法
- 关于静态和非静态
- 11.13
- JavaCC LOOKAHEAD option
- C语言 新手学习
- VS2013转换VC6.0项目失败解决办法
- JavaCC jjtTree options
- 微服务构建与部署 - Spring Boot实践
- final的使用