求救,dwr怎么取不到返回结果???appfuse+spring+dwr 代码如下: 
dwr.xml 
         <create creator="spring" javascript="userManagerDWR">             
              <param name="beanName" value="userManager"/> 
              <include method="checkExistUser"/>              
         </create> testDWR.jsp 
     <script src='dwr/engine.js'> </script> 
     <script src='dwr/util.js'> </script> 
     <script src='dwr/interface/userManagerDWR.js'> </script> 
     
<s:textfield id="user_01" name="userName"  required="true" maxlength="30" cssClass="text medium" theme="simple" 
onblur="javascript:checkExistUserByDWR(this.value);"/>     function checkExistUserByDWR(userName){ 
        var result; 
        if(userName.trim()!=""){ 
            alert(userName); 
            userManagerDWR.checkExistUser(userName,function(data){ 
                    result = data; 
                    alert(result); 
                } 
            );  
            alert(000); 
        } 
        alert(result); 
    } 现在的问题是,我跟踪了,已经执行了userManagerDWR.checkExistUser(String userName)这个方法,且该方法也有返回值,但是在function checkExistUserByDWR(userName)内始终没有获取到返回值,alert(result)这个没有执行,但是下面两个alert都执行了,也没有看到错误。 
请问怎么解决啊?弄了大半天都没有头绪。 

解决方案 »

  1.   

    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="new" javascript="userManagerDWR"> 
    <param name="class" value="userManager" />
     </create> 
    </allow>
     </dwr>
    web.xml里面你配置了吗?也需要配置。
      

  2.   

     <script src='dwr/engine.js'>  </script>  
          <script src='dwr/util.js'>  </script>  
          <script src='dwr/interface/userManagerDWR.js'>  </script>  
    如果配置文件和JAR之类的正确配置,那么可能是路径不对
    注意上面红色路径不是固定的哦
      

  3.   

    web.xml内是appfuse自动配置的。

         <filter>
            <filter-name>clickstreamFilter</filter-name>
            <filter-class>com.opensymphony.clickstream.ClickstreamFilter</filter-class>
        </filter>
    <listener>
            <listener-class>com.opensymphony.clickstream.ClickstreamListener</listener-class>
        </listener>
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        <listener>
            <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
        </listener>
        <listener>
            <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
        </listener>
        <listener>
            <listener-class>com.yp.app.webapp.listener.StartupListener</listener-class>
        </listener>
        <listener>
            <listener-class>com.yp.app.webapp.listener.UserCounterListener</listener-class>
        </listener>
        <listener>
            <listener-class>net.sf.navigator.menu.MenuContextListener</listener-class>
        </listener>    <servlet>
            <servlet-name>dwr-invoker</servlet-name>
            <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
            <init-param>
                <param-name>debug</param-name>
                <param-value>true</param-value>
            </init-param>
        </servlet>
        <servlet-mapping>
            <servlet-name>dwr-invoker</servlet-name>
            <url-pattern>/dwr/*</url-pattern>
        </servlet-mapping>

    这些都有配置,而且,我在action调用spring的service接口是可以正确执行的。想请问那个路径怎么设置?
    现在的问题就是,我debug进入UserDaoHibernate这个class,方法已经执行了,也就是userManagerDWR.checkExistUser(userName,function(data)这个js也执行了,但是就是没有值返回。
      

  4.   

    大虾帮忙看看啊,在线等web.xml是appfuse自动配置的。dwr也是appfuse自动加载的。
      

  5.   

    顶到高手进来!现在关键是
     userManagerDWR.checkExistUser(userName,function(data){  
                        result = data;  
                        alert(data);
    这个alert(data);根本就没有进来,但是userManagerDWR.checkExistUser是执行了的,我debug进了DAO类看了。  
      

  6.   

    testDWR.jsp 
          <script src='工程名/dwr/engine.js'>  </script> 
          <script src='工程名/dwr/util.js'>  </script> 
          <script src=工程名/dwr/interface/userManagerDWR.js'>  </script>  
      

  7.   

    对了,你用的tomcat是那个版本的和dwr.jar是那个版本。
    tomcat最好用5.5
      

  8.   

    testDWR.jsp  
           <script src='<%=request.getContextPath() %>/dwr/engine.js'>   </script>  
           <script src='<%=request.getContextPath() %>/dwr/util.js'>   </script>  
           <script src=<%=request.getContextPath() %>/dwr/interface/userManagerDWR.js'>   </script>  
      

  9.   

    将web.xml的staticFilter修改成:    <filter>
            <filter-name>staticFilter</filter-name>
            <filter-class>biz.liquidservice.mcrm.webapp.filter.StaticFilter</filter-class>
            <init-param>
                <param-name>includes</param-name>
                <param-value>/scripts/dojo/*,/dwr/index.html</param-value>
            </init-param>
        </filter>
      

  10.   

    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="new" javascript="userManagerDWR"> 
    <param name="class" value="userManager" />
    <convert converter="bean" match="com.dwr.TestBean">
     </create> 
    </allow>
     </dwr>注意:如果List、Set或者Map中的元素均为简单类型(包括其封装类)或String、Date、数组和集合类型,则不需要<convert>标签。
    ---------
    哥们,你是不是userManagerDWR.checkExistUser(String userName)返回的对象没有序列化呀?
      

  11.   

    userManagerDWR.checkExistUser(userName,function(data)
    中的funtion 要不要加个函数名字呀,function name (data)
      

  12.   

    序列化了呀!就是得到一个null