有相应jar文件、配置文件正确、在页面有导包       我的项目也有大量用到dwr,在本机没问题,放到服务器也没问题,没出现楼主说的情况

解决方案 »

  1.   

    我的项目也大量用到了dwr ,可是本本地项目无法出现错误。我也测试不出来。在服务器发布上后,就不行了。
      

  2.   

    我今天的问题和你们很像,本地连接好用,上传到服务器上测就不行了,是不是 AJAX对浏览器支持问题啊
      

  3.   

    我一直使用dwr 没发现象楼主说的问题
    把错误代码贴出来看下吧.
      

  4.   

    好的,代码我贴出来,从配置文件到,页面的代码:
    web.xml
      <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>dwr 配置文件:结合spring 并有bean 转换对象为 merchantOrder 实体
      <!DOCTYPE dwr PUBLIC
        "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
        "http://getahead.org/dwr/dwr20.dtd"><dwr>
      <allow>
            <create javascript="timecompare" creator="spring">
         <param name="beanName" value="merchantorderservice"></param>
          
         <include method="findCity"/>
         <include method="findZipCode"/>
        </create>
        <convert match="com.openunion.cod.model.order.MerchantOrder" converter="bean"></convert>
        </allow>
    </dwr>
    spring 配置文件 和 实现类;
        <bean id="merchantorderdao" class="com.openunion.cod.dao.order.MerchantOrderDaoImpl">
    <property name="dataSource" ref="dataSource"/>
    </bean>

    <bean id="merchantorderservice" parent="baseTransactionProxy">
    <property name="target">
    <bean class="com.openunion.cod.service.order.MerchantOrderServerImpl">
    <property name="merchantorderdao" ref="merchantorderdao"></property>
    </bean>
    </property>
    </bean>      事务管理和连接数据库
           
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
    </bean>
    <--事务管理-->
        <bean id="baseTransactionProxy" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
            <property name="transactionManager" ref="transactionManager" />
            <property name="transactionAttributes">
                <props>
                    <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>
                    <prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>
                    <prop key="remove*">PROPAGATION_REQUIRED,-Exception</prop>
                    <prop key="*">PROPAGATION_REQUIRED</prop>
                </props>
            </property>
        </bean> merchantServiceImpl 依赖注入的dao 实现类
           public class MerchantOrderServerImpl implements MerchantOrderService {
    private MerchantOrderDao merchantorderdao;   get set 方法不贴上来了
           
          dwr 调用的方法:
                   public List findCity(String province) {
     
    return merchantorderdao.findCity(province);
    } public String findZipCode(String province, String city) {
     
    return merchantorderdao.findZipCode(province, city);
    }
          页面如下:
         <%@ page contentType="text/html;charset=UTF-8" language="java"%>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html:html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>我的管理</title>
    <html:base />
      
    <script type='text/javascript' src='/cod/dwr/interface/timecompare.js'></script>
    <script type='text/javascript' src='/cod/dwr/engine.js'></script>
    <script type='text/javascript' src='/cod/dwr/util.js'></script>
         
     
    </head>
           这里只展示dwr 调用相关元素
            <td colspan="3">
         <select id="myprovince" onchange="changecity();">
    <option value="">--请选择--
         <option value="11">北京市
         <option value="22">天津市
         <option value="HJ">河北省
         <option value="SX">山西省
         <option value="NM">内蒙古自治区
         <option value="LN">辽宁省
         <option value="JL">吉林省
         <option value="HL">黑龙江省
         <option value="33">上海市
         <option value="JS">江苏省
         <option value="ZJ">浙江省
         <option value="AH">安徽省
         <option value="FJ">福建省
         <option value="JX">江西省
         <option value="SD">山东省
         <option value="HY">河南省
         <option value="HB">湖北省
         <option value="HN">湖南省
         <option value="GD">广东省
         <option value="GX">广西壮族自治区
         <option value="HQ">海南省
         <option value="44">重庆市
         <option value="SC">四川省
         <option value="GZ">贵州省
         <option value="YN">云南省
         <option value="XZ">西藏自治区
         <option value="SN">陕西省
         <option value="GS">甘肃省
         <option value="QH">青海省
         <option value="NX">宁夏回族自治区
         <option value="XJ">新疆维吾尔自治区
         </select>              <select name="mycity" id="mycity" onchange="changhtcity();">
                                  <option>--请选择--</option>
                                </select>
       下面是 javascript的 函数
           function changhtcity(){
    var  citytext = dwr.util.getText("mycity");
    var text = dwr.util.getText('myprovince');
    if(citytext!='--请选择--'){
      if(text!="北京市"||text!="天津市"||text!="上海市"||text!="--请选择--"){
         dwr.util.setValue("street",text+citytext);
         document.getElementById("tijiao").destination.value=citytext;
      }
    }
    var provincevalue = dwr.util.getValue("myprovince");

    timecompare.findZipCode(provincevalue,citytext,{
    callback:function(str){
        if(str==null){
    document.getElementById("tijiao").buyerzip.value='';
    }
        
        var zip = str.replace(/(^\s*)|(\s*$)/g, ""); 
    document.getElementById("tijiao").buyerzip.value=zip;

    }
    });

    } 以上代码,在我的本地和开发环境是可以正常运行的,但发布到服务器上,用户方就报JS 错误,就是左下角的JS错误,说我的dwr未定义。请问这是什么问题。是不是发布少包的问题。请有类似的经历的兄弟一起来讨论,解决这个头疼的问题
      

  5.   

    你打包的时候有没有吧DWR Jar包打进去啊?如果本地运行没什么问题的话,那你把Jar包一块儿打包后提交到服务器看看。。
      

  6.   

    1:我的源码贴上了,无非就是选择省市的时候,选择省,出现市。在用户方都是可以选择的,但当点击保存的时候,就出了问题报 dwr 未定义。。jar 包未上传的可能性很小,我看看是不是由于引用
      $(“”) 像这样引用的值做判断是错的,全部改成变量去做判断,我是直接去通过dwr 取值来判断if else 的,还是没有试验出结果,在试验。。
      

  7.   

    你把 <script type='text/javascript' src='/cod/dwr/interface/timecompare.js'> </script> 
    <script type='text/javascript' src='/cod/dwr/engine.js'> </script> 
    <script type='text/javascript' src='/cod/dwr/util.js'> </script> 
    换成 <script type='text/javascript' src='/dwr/interface/timecompare.js'> </script> 
    <script type='text/javascript' src='/dwr/engine.js'> </script> 
    <script type='text/javascript' src='/dwr/util.js'> </script> 
    试试,或者你自己先讲 dwr 运行出来,看看你的方法是不是正确的, dwr 默认路径: http://localhost:8084/站点名称/dwr   ,我看你的配置文件中没有修改 dwr 的路径,它应该使用的是默认的路径,所以路径这里应该为  <script type='text/javascript' src='/dwr/interface/timecompare.js'> </script> 
      

  8.   

    在本地测试时,你是不是直接在编译环境下部署上的吧,而上传到服务器的时候,你是打包部署的吧,
    原因可能是你没有把dwr.jar打包进去,你可以去WEB-INF/lib/下有没有dwr.jar这个jar包.
      

  9.   

    没有出现过上述现象。 怀疑你发布时候丢掉了dwr文件
      

  10.   

    检查你本机环境的 JDK 和服务器上的 JDK 是不是一个版本,有时候如果服务器上的版本低了话就不能识别出高版本编译出来的 DWR 的类
      

  11.   

    换成这个<script type='text/javascript' src='/dwr/engine.js'> </script> 
    <script type='text/javascript' src='/dwr/util.js'> </script> 
    <script type='text/javascript' src='/dwr/interface/timecompare.js'> </script> 
      

  12.   

    客户是否用了portal 类似的 系统集成平台 那么路径就会有问题了
      

  13.   

    var  citytext = dwr.util.getText("mycity"); 

    var  citytext = DWRUtil.getText("mycity"); 一样吗?
      

  14.   

    我也遇到一样的问题,是因为没有dwr这个包。我把本地的包都拷到server/default/lib下,重启jboss,就可以了。