首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > 应用服务器 >

java反照灵异事件,求大师相助

2012-12-24 
java反射灵异事件,求大师相助本帖最后由 jeking217 于 2012-02-13 15:37:19 编辑最近发现一个很灵异的事件

java反射灵异事件,求大师相助
本帖最后由 jeking217 于 2012-02-13 15:37:19 编辑 最近发现一个很灵异的事件,事情是这样的:我使用的是structI,写了一个BaseAction,所有的其他所有的action都继承这个BaseAction类,在BaseAction的execute方法中采用反射的方法,根据传入的参数,执行子类的不同方法。
类图结构如下:

BaseAction的execute方法代码如下:


@Override
@SuppressWarnings("unchecked")
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {

session = request.getSession();

String thisAction = request.getParameter("act");
if (Tool.isEmpty(thisAction)) {
return mapping.findForward("error");
}


this.actionForward = null;
success = true;
try {
this.request = request;
this.response = response;
this.form = (BaseForm) form;
if (!Tool.isEmpty(thisAction)) {
Class ctrlClass = this.getClass();
Method ctrlMethod = null;
ctrlMethod = ctrlClass.getMethod(thisAction);
ctrlMethod.invoke(this);
}
} catch (Exception e) {
System.out.println("方法没找到:"+thisAction);
success = false;
}
if (!success)
forward = "error";

if (actionForward == null) {
return mapping.findForward(forward);
} else {
return actionForward;
}
}



 灵异事件描述:都是访问同一个链接请求,可大部分情况下可以正常访问到,但是也会出现找不到该方法的异常,导致页面出错!!各位大师,这是什么情况,如何解决呢??

[最优解释]
你确定你这两句没写错?
ctrlMethod = ctrlClass.getMethod(thisAction);
ctrlMethod.invoke(this);

方法定义是Method getMethod(String str, Class<?>... types)
Object invoke(Object obj, Object... args)

还有就是getMethod只能获取到public的,可能你有些方法不是public的吧。可以使用getDeclaredMethod
[其他解释]
引用:
你确定你这两句没写错?
ctrlMethod = ctrlClass.getMethod(thisAction);
ctrlMethod.invoke(this);

方法定义是Method getMethod(String str, Class<?>... types)
Object invoke(Object obj, Object... args)

还有就是getMetho……

abstruct 说的有道理,方法确实是public,但为什么只是偶尔出现方法找不到的异常,而大部分时间又是可以的呢!!我先试试你说的方法,修改一下!非常感谢你……

热点排行