Dwr与Jquery冲突解决办法以及DWR调用问题
一:JQUEYR与DWR冲突问题: $()函数(它是合法的JS名字),很多JS框架都会用“$”命名方法来获取页面元素。 都是从Prototype学来的主意。 大略的讲$=document.getElementById.因为在JS中需要大量这样的语句,换用$会比较简洁。 Dwr的util.js中是这样定义的: var$; 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层代码执行数据库操作,则需要手动提交事务处理。 DWR中调用dao层需要手动处理事物。事物不会自动提交。 所以要调用service层的方法,让service来处理事物。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |