一:JQUEYR与DWR冲突问题:
$()函数(它是合法的JS名字),很多JS框架都会用“$”命名方法来获取页面元素。
都是从Prototype学来的主意。
大略的讲$=document.getElementById.因为在JS中需要大量这样的语句,换用$会比较简洁。
Dwr的util.js中是这样定义的:
var$;
if(!$){
$=dwr.util.byId;
}
jQuery中$()函数是查找某一类型的元素,jQuery根据ID取对象的方法是$("#id");
jQuery的选择器更灵活多样。
如果同时引入两个JS就会出现方法冲突。
解决办法有很多种。
1.放弃dwr的util.js。用jQuery的方法来操作页面元素。
2.如果想同时使用。
(1)jquery官网给出了解决办法:
varj=jQuery.noConflict();
j(document).ready(function(){
//代码,如j("#name")
}
jQuery.noConflict()
运行这个函数将变量$的控制权让渡给第一个实现它的那个库。
这有助于确保jQuery不会与其他库的$对象发生冲突。
在运行这个函数后,就只能使用jQuery变量访问jQuery对象。例如,在要用到$("divp")的地方,就必须换成jQuery("divp")。
注意:这个函数必须在你导入jQuery文件之后,并且在导入另一个导致冲突的库之前使用。当然也应当在其他冲突的库被使用之前,除非jQuery是最后一个导入的。
(2)改掉DWR的方法名:
可以把dwr取值的方法换成另一个。
var_d;
if(!_d){
_d=dwr.util.byId;
}
OK,这样你就能用”_d”来替换DWR中的$符号了。
如:DWREngine.setPostHook(function(){_d('disabledZone').style.visibility='hidden';});
3.或者干脆都用jQuery.
二:DWR调用问题:
1、在jsp中调用dwr进行后台业务验证时,如果需要执行数据库操作,则需要调用程序的service层代码,而非调用dao代码,如果调用dao层代码执行数据库操作,则需要手动提交事务处理。