关于dwr 未定义问题,在本地开发环境,测试环境通过,但发布到服务器,用户方就js 错误 dwr 未定义 有相应jar文件、配置文件正确、在页面有导包 我的项目也有大量用到dwr,在本机没问题,放到服务器也没问题,没出现楼主说的情况 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的项目也大量用到了dwr ,可是本本地项目无法出现错误。我也测试不出来。在服务器发布上后,就不行了。 我今天的问题和你们很像,本地连接好用,上传到服务器上测就不行了,是不是 AJAX对浏览器支持问题啊 我一直使用dwr 没发现象楼主说的问题把错误代码贴出来看下吧. 好的,代码我贴出来,从配置文件到,页面的代码: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未定义。请问这是什么问题。是不是发布少包的问题。请有类似的经历的兄弟一起来讨论,解决这个头疼的问题 你打包的时候有没有吧DWR Jar包打进去啊?如果本地运行没什么问题的话,那你把Jar包一块儿打包后提交到服务器看看。。 1:我的源码贴上了,无非就是选择省市的时候,选择省,出现市。在用户方都是可以选择的,但当点击保存的时候,就出了问题报 dwr 未定义。。jar 包未上传的可能性很小,我看看是不是由于引用 $(“”) 像这样引用的值做判断是错的,全部改成变量去做判断,我是直接去通过dwr 取值来判断if else 的,还是没有试验出结果,在试验。。 你把 <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> 在本地测试时,你是不是直接在编译环境下部署上的吧,而上传到服务器的时候,你是打包部署的吧,原因可能是你没有把dwr.jar打包进去,你可以去WEB-INF/lib/下有没有dwr.jar这个jar包. 没有出现过上述现象。 怀疑你发布时候丢掉了dwr文件 检查你本机环境的 JDK 和服务器上的 JDK 是不是一个版本,有时候如果服务器上的版本低了话就不能识别出高版本编译出来的 DWR 的类 换成这个<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> 客户是否用了portal 类似的 系统集成平台 那么路径就会有问题了 var citytext = dwr.util.getText("mycity"); 和var citytext = DWRUtil.getText("mycity"); 一样吗? 我也遇到一样的问题,是因为没有dwr这个包。我把本地的包都拷到server/default/lib下,重启jboss,就可以了。 我重写地址把文本框的值当参数转递给struts2的action处理,急需高手们帮助 关于frameset 如何限制上传图片的尺寸? 如何读取jar包里面的配置文件 gb2312与utf-8编码之间的转换!求代码... 大家说说:一个顶尖的程序员,最优秀的品质是什么? The requested resource (/login.do) is not available 讨论用servlet 编程时,构建连接池,访问数据库 prefix 是什么意思??谢谢! 请问高手 javabean 与 weblogic 的问题!!!!!! 对jQuery的验证信息国际化 急!!!! 在线等!
把错误代码贴出来看下吧.
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未定义。请问这是什么问题。是不是发布少包的问题。请有类似的经历的兄弟一起来讨论,解决这个头疼的问题
$(“”) 像这样引用的值做判断是错的,全部改成变量去做判断,我是直接去通过dwr 取值来判断if else 的,还是没有试验出结果,在试验。。
<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>
原因可能是你没有把dwr.jar打包进去,你可以去WEB-INF/lib/下有没有dwr.jar这个jar包.
<script type='text/javascript' src='/dwr/util.js'> </script>
<script type='text/javascript' src='/dwr/interface/timecompare.js'> </script>
和
var citytext = DWRUtil.getText("mycity"); 一样吗?