问题: DWR一直报 Missing callback function or metadata object ,前台页面一直抱这个错.
跟踪进engine.js 的 execute 方法 发现 arguments.length 不对.
//从函数参数的第4个开始算,因为前3个不算,前3个分别是服务器端的请求路径,远程服务脚本名,//远程服务的方法
for (var i = 0; i < arguments.length - 3; i++) {
args[i] = arguments[i + 3];
}
//设置请求路径
--- 这个最后一个参数必须为回调函数. 但是这里却不是.
var firstArg = args[0];
//取出最后一个,通常是远程方法的参数(一般情况下,除了第一个其他都是)
var lastArg = args[args.length - 1];
最后发现是因为 java 类中定义了一个同名的方法(参数个数不同),从而导致了改问题的出现.
这个应该是DWR的bug引起的吧.