Ajax实现登录功能时的问题
dwr.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
    "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
  <allow>
    <create creator="spring" javascript="loginAjax">
      <param name="beanName" value="loginAjax"/>
    </create>
    <convert converter="bean" match="com.crm.entity.TblUser"/>
  </allow>
</dwr>
          public TblUser login(String uName,String uPass)
{
if(uName!=null && !"".equals(uName) && uPass!=null && !"".equals(uPass))
{
System.out.println("uName="+uName);
TblUser user = biz.login(uName, uPass);
if(user!=null)
System.out.println("user is not null");
return user;
}
return null;
}

public String test(String name)
{
System.out.println("N="+name);
return "name="+ name;

}没有错误、异常在方法中打印测试结果正确。在页面里http://localhost:8080/crm/dwr/test/loginAjax测试中测试时没有返回值请问是什么原因?新手分不多

解决方案 »

  1.   

    忘了 
    web.xml<!-- DWR Config -->  
      <servlet>
       <servlet-name>dwrCRM</servlet-name>
       <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
         <init-param>
          <param-name>debug</param-name>
          <param-value>true</param-value>
         </init-param>
         <init-param>
          <param-name>loglevel</param-name>
          <param-value>WARN</param-value>
         </init-param>
         <init-param>
          <param-name>crossDomainSessionSecurity</param-name>
          <param-value>false</param-value>
         </init-param>
      </servlet>
      <servlet-mapping>
         <servlet-name>dwrCRM</servlet-name>
         <url-pattern>/dwr/*</url-pattern>
      </servlet-mapping>
      

  2.   

    只是在dwr的测试页面中就不行了。还没到jsp页呢
      

  3.   

    java方法里可以打印出正确的数据,就是没有结果返回给测试页。
    我是从http://localhost:8080/crm/dwr里测试的。还没到具体页面呢
    tcp/ip monitor显示的数据也正常,下面是一部分,"rtytryrty"是我在test方法测试时输入的参数
    .....
    //#DWR-INSERT
    //#DWR-REPLY
    dwr.engine._remoteHandleCallback('0','0',"test#name=rtytryrty");
      

  4.   

    因为你的dwr方法有两个参数 你在页面调的时候很有可能将你的回调方法当参数传过去了和服务器有点关系 在tomcat下面可能没有问题websphere可能会有问题  或者是你的方法重载了(方法名相同参数不同而已)
      

  5.   

    建议将你的参数用键值对形式传过去 就是一个map对象
      

  6.   

    0楼那里的方法
    在点击Execute按钮后
    可以打印出结果
    并且正确
    但返回值在测试页面没有输出(弹框)
      

  7.   

          public TblUser login(String uName,String uPass)
        {
            if(uName!=null && !"".equals(uName) && uPass!=null && !"".equals(uPass))
            {
                System.out.println("uName="+uName);
                TblUser user = biz.login(uName, uPass);
                if(user!=null)
                    System.out.println("user is not null");
                return user;
            }
            return null;
        }
    此方法返回了NULL,你把return null;这一句去掉,把return user;拉到括号外面来试试  
      

  8.   


    在10楼的页面里测试test方法也不行。
    我觉得不关方法什么事,下面是我现在用的。
    public TblUser login(String uName,String uPass)
    {
    if(uName!=null && !"".equals(uName) && uPass!=null && !"".equals(uPass))
    {
    System.out.println("uName="+uName);
    TblUser user = biz.login(uName, uPass);
    if(user!=null)
    {
    System.out.println("user is not null");
    WebContext wt = WebContextFactory.get();
    HttpSession s = wt.getHttpServletRequest().getSession();
    s.setAttribute("loginUser", user);
    return user;
    }
    return null;
    }
    return null;
    }
    在测试时(用户名密码都是A)可以输出
    uName=A
    user is not nulltest方法随便输入什么就可以输出
    name=什么但问题在于10楼的DWR测试界面里点击第一个或第三个Excute按钮都没有弹出显示结果的对话框。 
    其实根本不需要到login.jsp去测试。因为上面没有成功下面的觉不用测了。
    在login.jsp页面测试.可以弹出 Run 和 000两个对话框。至于haha什么的就没有了function login()
    {
    var name=document.forms[0].elements["user.userName"].value;
    var pass=document.forms[0].elements["user.userPwd"].value;
    if(name!=null && pass !=null)
    {
    alert("Run");
    loginAjax.login(name,pass,callBackLogin);
                                    alert("000"); }else
    {
    alert("用户名或密码为空!");
    }
    }

    function test()
    {
    var t=document.getElementById("txtContent").value;
    if(t!=null)
    {
    loginAjax.test(t,callBackLogin);
    }
    }

    function callBackLogin(data)
    {
    alert("haha");
    alert(data);
    }
      

  9.   

    问题解决了。上来说一下。
    DWR和ssh依然是没有问题
    问题出在我的过滤器中
    response.setContentType("text/html;chartset="+charSet);因为是ajax调用,所以红色代码的位置就有问题了