麻烦各位了
其实我就是用 S2SH 框架开发
结合DWR2.0框架的时候出现的问题
[b]"misssing method or missing parameter userManager.checkLogin" [/b]
DWR文件是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">
<create creator="spring" javascript="userManager">
<param name="beanName" value="userService"/>
<include method="checkLogin"/>
</create>
<convert converter="bean" match="java.lang.StackTraceElement" />
userService 是通过autowired注解注入的,下面是方法代码,接口是 IUserService
/* (non-Javadoc)
* @see com.squall.oa.service.IUserService#checkLogin(com.squall.oa.model.User)
*/
public boolean checkLogin(User user) {
try {
return userDao.checkLogin(user);
} catch (Exception e) {
log.error("UserServiceImpl Err->checkLogin() Descirption:"+e.getMessage());
throw new RuntimeException("用户验证出错!",e);
}
}
前台JSp代码:
unction validateUser(){
var username,password;
username = $("uname").value;
password = $("upass").value;
myUser.u_name = username;
myUser.u_pass = password;
if (userManager.checkLogin(myUser,callBackLogin)){
alert('用户名密码正确!');
return true;
}else{
alert('用户名密码错误!');
return false;
}
}
function callBackLogin(data){
alert(data);
}
[b]问题补充:[/b]
感谢 lovewhzlq (资深架构师)
DWR的包我也引用了 ,而且肯定是前台JSP的问题,
因为,我开始把 userService.checkLogin(User user)的接口方法改了 改成 userService.checkLogin(String u_name,String u_pass)的 就没问题了。
但是我想传入user对象到dwr中去调用userService.checkLogin(User user)的时候就出现以上问题。
异常确定是前台的DWR异常
[b]"misssing method or missing parameter userManager.checkLogin" [/b]
[b]问题补充:[/b]
To: lovewhzlq (资深架构师)
非常感谢您!!
通过您的指点,我的DWR已经不报错了!~
那么为什么必须要重新var myUser = {}; 呢?
请看 userManager.js
if (typeof myUser != "function") {
var myUser = function() {
this.id = 0;
this.expireTime = null;
this.createTime = null;
this.person = null;
this.u_pass = null;
this.u_name = null;
}
}
// Provide a default path to dwr.engine
if (dwr == null) var dwr = {};
if (dwr.engine == null) dwr.engine = {};
if (DWREngine == null) var DWREngine = dwr.engine;
if (userManager == null) var userManager = {};
userManager._path = '/qs_oa/dwr';
userManager.checkLogin = function(p0, callback) {
dwr.engine._execute(userManager._path, 'userManager', 'checkLogin', p0, callback);
}
里面已经有了
var myUser = function() {..}
为什么还要重新再去 var myUser呢?
您真是高手啊! 一下就搞定了我郁闷1天的问题!
[b]问题补充:[/b]
还是有个小问题,前台JSP点击登录以后 为什么总是弹出 “用户名或密码错误”
通过DWR返回checkLogin的值 alert出来以后没有问题 一个是true 一个是false 但是不论alert出来的是true还是false 一直弹出 用户名或密码错误” ,我觉得是不是我的JS写的有问题?
function validateUser(){
var username,password;
username = $("uname").value;
password = $("upass").value;
var myUser = {};
myUser.u_name = username;
myUser.u_pass = password;
if (userManager.checkLogin(myUser,callBackLogin)){
alert('用户名密码正确!');
return true;
}else{
alert('用户名密码错误!');
return false;
}
}
function callBackLogin(data){
alert(data);
}