author:heguikun
主要是类方法的调用,按平时用sping模板获得的方法,
dwr 不支持,要用以下的写法才行。
经过一翻周折,终于弄好了
现在写下来给大家分享一下!
使用之前,必须保证在项目的lib下放进dwr包
--------------------------------------------------------------------------------------------------------------------------------
1. 转换为脚本的类
package biz.impl.dwrPackge;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.web.context.support.WebApplicationContextUtils;
import biz.impl.chenfeiwu.ZpglBiz;
/*
* 系统机构dwu
*/
public class XtszDwr extends HibernateDaoSupport {
public boolean GetXtszJg(String jgJc) throws Exception {
String sql="from Jg where jgJc='"+jgJc+"'";//组织sql语句
System.out.println("dwr中的sql语句:"+sql);
WebContext ct=WebContextFactory.get();//Webcontext对象
HttpServletRequest request=ct.getHttpServletRequest();//取得request
return getMail(request, sql);//调用如下方法
}
public static boolean getMail(HttpServletRequest request,String sql)throws Exception{
ServletContext sc = request.getSession().getServletContext();
ApplicationContext ac = WebApplicationContextUtils.getRequiredWebApplicationContext(sc);
ZpglBiz biz = (ZpglBiz) ac.getBean("zpglBizImpl");//取得spring中的bean
List list= biz.findQuery(sql);
if (list.size()>0) {
System.out.println("该机构名已经存在!");
System.out.println("返回:true");
return true;//存在
}else {
System.out.println("该机构名可用!");
System.out.println("返回:false");
return false;//不存在
}
}
}
---------------------------------------------------------------------------------------------------------------
2.dwor.xml 代码如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="XtszDwr"><!-- http://getahead.org/dwr/dwr20.dtd脚步引用时用的对象名 -->
<param name="class" value="biz.impl.dwrPackge.XtszDwr"/>
<include method="GetXtszJg"/><!-- hrm.action.XtszAction类中暴露的方法 -->
</create>
<convert match="entity.Jg" converter="bean"></convert>
</allow>
</dwr>
---------------------------------------------------------------------------------------------------------------
3.web.xml中引用的节点
<servlet>
<servlet-name>dwr</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>
<servlet-mapping>
<servlet-name>dwr</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
---------------------------------------------------------------------------------------------------------------
3.页面脚本代码如下:
<!-- =======================dwr start================= -->
<!--自定义的类,脚步的对象-->
<script src="dwr/interface/XtszDwr.js"></script>
<script src="dwr/engine.js"></script>
<script src="util.js"></script>
<script type="text/javascript">
function JgExists()
{
jg=document.getElementById("Jc");
var jgJc=jg.value;
if(!jgJc)
{
alert("机构名不能为空!");
jg.focus();
return;
}
alert("开始调用Dwr");
XtszDwr.GetXtszJg(jgJc,jgDWR);//这脚本的声明在dwr.xml
}
function jgDWR(isExist)
{
//已经存在返回true 不存在返回false
alert("进入回调函数r");
alert(isExist);
if(isExist==0)//返回值是真假,用0代表不存在= false
{
alert("开始添加机构!");
document.forms[0].action="<%=request.getContextPath()%>/xtsz.do?operate=DoAddJg";
document.forms[0].submit();
}else
{//1代表ture
alert("该机构已经存在,请更改!");
}
}
</script>
<!-- ===========================dwr end=========================== -->
--------------------------------------------------------------------------------------------------------------
完成以上的工作就可以运行了
这里主要让大家主要的是 XtszDwr 类的方法代码,对request的实例化 和WebApplicationContextUtils的对象
必须保证这样写 项目才支持,否则返回的是eorror提示框
还有别人说调用的接口方法 要abstract修饰,但我这里没有,也一样可行,如果不想就试试吧!
本代码来自何谷坤项目-----------------------------------
祝你成功!