liqueur 2009-08-21 09:15
浏览 305
已采纳

DWR2.0框架 misssing method or missing parameter userManager.checkLogin

麻烦各位了

其实我就是用 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);
}

  • 写回答

2条回答 默认 最新

  • wanghaolovezlq 2009-08-21 09:44
    关注

    function validateUser(){
    var username,password;
    username = $("uname").value;
    password = $("upass").value;
    [color=red]var myUser = {};[/color]
    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);
    }

    还是,你后台的user类的字段是什么

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料