DWR配置
今日用到了DWR让我折腾了一会,最终搞定,先记住,方便下次不用麻烦!
1,添加Dwr.jar
2,配置web.xml(请自行添加ContextLoaderListener监听器,否则bean无法获取!),
?????
<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> <init-param> <param-name>crossDomainSessionSecurity</param-name> <param-value>false</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping>
?
3,配置dwr.xml(将此文件添加到WEB-INFO目录下,此配置方法很多,详参考相关文档)
????
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd"><dwr> <allow> <create creator="spring" javascript="aclManager" scope="application"> <param name="beanName" value="aclManager"/> </create> <convert converter="bean" match="com.panlong.service.impl.AclManagerImpl" /> </allow></dwr>
?
4,要使用时请先在调用页面引入文件如下:
????
<script type="text/javascript" src="<%=request.getContextPath() %>/dwr/engine.js"></script><script type="text/javascript" src="<%=request.getContextPath() %>/dwr/util.js"></script><script type="text/javascript" src="<%=request.getContextPath() %>/dwr/interface/aclManager.js"></script>
5,使用例子。
????
<script type="text/javascript">//授权function addOrUpdatePermission(field){dwr.engine.setAsync(false);//如果被选择上,则同时选择其"不继承"和"启用"checkboxif(field.checked){$(field.moduleId+"_USE").checked = true;<c:if test="${aclInfo.principalType eq 'User' }">$(field.moduleId+"_EXT").checked = true;addOrUpdateExtends(field);</c:if>}aclManager.addOrUpdatePermission("${aclInfo.principalType}",${aclInfo.principalId},field.moduleId,field.permission,field.checked);}//设置用户的继承特性function addOrUpdateExtends(field){aclManager.addOrUpdateUserExtends(${aclInfo.principalId},field.moduleId,!field.checked);}//点击启用checkboxfunction usePermission(field){//如果checkbox被选中,意味着需要更新ACL的状态//更新C/R/U/D以及Extends状态//设置为同步方式,以便DWR依次发出下列请求dwr.engine.setAsync(false);if(field.checked){addOrUpdatePermission($(field.moduleId+"_C"));addOrUpdatePermission($(field.moduleId+"_R"));addOrUpdatePermission($(field.moduleId+"_U"));addOrUpdatePermission($(field.moduleId+"_D"));<c:if test="${aclInfo.principalType eq 'User' }">addOrUpdateExtends($(field.moduleId+"_EXT"));</c:if>}else{aclManager.delPermission("${aclInfo.principalType}",${aclInfo.principalId},field.moduleId);$(field.moduleId+"_C").checked = false;$(field.moduleId+"_R").checked = false;$(field.moduleId+"_U").checked = false;$(field.moduleId+"_D").checked = false;<c:if test="${aclInfo.principalType eq 'User' }">$(field.moduleId+"_EXT").checked = false;</c:if>}}function initTable(){aclManager.searchAclRecord("${aclInfo.principalType}",${aclInfo.principalId},function(datas){for(var i=0; i < datas.length; i++){var moduleId = datas[i][0];var cState = datas[i][1];var rState = datas[i][2];var uState = datas[i][3];var dState = datas[i][4];var extState = datas[i][5];$(moduleId+"_C").checked = cState == 0 ? false : true;$(moduleId+"_R").checked = rState == 0 ? false : true;$(moduleId+"_U").checked = uState == 0 ? false : true;$(moduleId+"_D").checked = dState == 0 ? false : true;<c:if test="${aclInfo.principalType eq 'User' }">$(moduleId+"_EXT").checked = extState == 0 ? true : false;</c:if>$(moduleId+"_USE").checked = true;}});}</script>?
结束!
1 楼 w7006007 2012-08-27 感觉DWR没用。用了还不如不用。 2 楼 it_dengdong 2012-08-27 我现在都用jquery的ajax操作JSON了。