日期:2014-05-19  浏览次数:20735 次

高手帮忙看下怎么实现。
@RequestMapping("/{modelName}.do")
public ModelAndView addObject(
@ModelAttribute("workLog") WorkLog workLog,
@ModelAttribute("workPlan") WorkPlan workPlan,
@ModelAttribute("approvalProcess") ApprovalProcess approvalProcess,
@PathVariable("modelName") String modelName,
@RequestParam(value = "op", required = false, defaultValue = "") String op,
@RequestParam(value = "id", required = false, defaultValue = "") Integer id) {

ModelAndView mav = new ModelAndView();
log.info("==============" + modelName + "==" + op + "==" + id);
HashMap inputMap = new HashMap();
HashMap outputMap = new HashMap();
Object obj=new Object();
if (!op.equals("")) {
switch (op) {
case "add":
inputMap.put("modelName", modelName);
inputMap.put("object",this.getObject(modelName));
log.info("Ltime=============================="+workLog.getlTime());
obj = this.addObject(inputMap, outputMap);
mav.addObject("return_obj", obj);
mav.setViewName(this.getTargetUrl(modelName));

如上代码,这一个通用的方法,但是我需要传一个对象过去
	private Object getObject(String modelName) {
Object object =new Object();

return object;

}

有没有办法让我用这个方法获得相对的对象。

先谢谢了
------解决方案--------------------
不太理解你的逻辑,根据你的代码来看只能获得一个刚初始的对象,不知道有什么作用

 还是说说吧  通过modelName 使用反射找到model包下的modelName 的class并可以获得它的实例
------解决方案--------------------
你这个modelName是什么样的是不是class全路径例如com.apache.util.Model这样的还是只是写不加包名的类名。如果是全类名的话可以使用反射初始化对象。Class.forName(modelName).newInstance();这里必须有无参构造方法。否则报错。如果是不加包名的String那就没法加载了。
------解决方案--------------------
引用:
你这个modelName是什么样的是不是class全路径例如com.apache.util.Model这样的还是只是写不加包名的类名。如果是全类名的话可以使用反射初始化对象。Class.forName(modelName).newInstance();这里必须有无参构造方法。否则报错。如果是不加包名的String那就没法加载了。

补充下不加包名的这个类必须不属于任何包,如果有包而又不写全的那么就没法加载了。