首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

在 Spring Web MVC 环境下使用 DWR(2)

在 Spring Web MVC 环境下使用 DWR(2)

调用远程对象对于公开的每个类,DWR 动态地生成包含在 Web 页面中的 JavaScript。生成的 JavaScript 包含存根函数,代表 Java 类对应的方法。Java 方法与对应的 JavaScript 函数之间的映射规则为 JavaScriptName.methodName(methodParams ..., callBack),其中 JavaScriptName 是 creator 属性指定浏览器中被创造出来的对象名字,methodName 是 Java 的方法名,methodParams 代表 Java 方法的参数,最后的 callBack 是 Java 方法返回后要回调的 JavaScript 函数。清单 8 是在 jsp 页面中使用 DWR 创建的 javascript 对象调用公开的方法。
清单 8. 用 javascript 对象调用公开的方法
1
2
3
4
5
6
7
8
9
10
11
12
13
function callBackfindExistedUser(data){
var userExistedMessage = $("userExistedMessage");
if (data == 1)
userExistedMessage.style.display = "block";
else
userExistedMessage.style.display = "none";
}

function findExistedUser(){
var name = DWRUtil.getValue("name");
if (name != "")
userManager.findExistedUser(name,callBackfindExistedUser);
}




在 jsp 页面使用 DWR,需要添加清单 9 的代码。
清单 9. 在 jsp 页面使用 DWR 要包含的文件
1
2
3
<script type='text/javascript' src='dwr/interface/userManager.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>




DWR 会自动根据 UserManager 类帮我们生成了 userManager.js 文件。engine.js 是用来转换动态生成接口的 javascript 函数调用,util.js 包含了一些工具函数,让页面对 javascript 的调用更加方便。
Spring MVC 简介Spring 框架提供了构建 Web 应用程序的 MVC 模块。Spring MVC 内建了一个请求驱动的 web mvc 框架,以一个 DispatcherServlet 分发器为中心,将 web 请求分发到各个不同的处理器进行处理。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色。
配置 Spring MVC需要下载 spring.jar 和 spring-webmvc.jar 包,将它放在 web 程序的 WEB-INF/lib 目录下面。
本例中使用控制器 AbstractWizardFormController,它的主要功能是允许多个表单共用一个表单对象,通常一些表单填的内容比较多,表单会很长,可以将表单分成几页,让用户一页页去完成。表单对象的属性与多个页面所有需填写的对象绑定。AbstractWizardFormController 类的 processFinish 方法定义的是全部表单完成后提交的处理。所有的表单内容都收集在 command 对象中,通过 ModelAndView 的构造方法把它放在 model 对象中,并在 view 页面上显示出来。
清单 10. processFinish 方法将表单内容传输给 view 页面
1
2
3
4
5
6
7
protected ModelAndView processFinish(HttpServletRequest request,
HttpServletResponse response,
Object command,
BindException exception) throws Exception {
RegisterForm registerForm = (RegisterForm) command;
return new ModelAndView(this.getSuccessView(), "registerForm", registerForm);
}




清单 11 在 mvc-config.xml 中对 controller 进行配置。
清单 11. 对 controller 进行配置
1
2
3
4
5
6
7
8
9
10
11
12
<bean id="registerController" class=" developworks.dwrspring.action.RegisterController">
   <property name="commandClass" value="developworks.dwrspring.vo.RegisterForm">
</property>
<property name="userManager" ref="userManager"></property>
<property name="successView" value="account/success"/>
<property name="pages">
<list>
<value>account/register1</value>
<value>account/register2</value>
</list>
</property>
</bean>




这里 commandClass 用来绑定 form 的 bean class。list 元素定义的两个 value 值分别表示表单的第一个页面和第二个页面。successView 属性表示表单提交后要转到的页面。
第一个页面中的表单内容如下:
清单 12. 第一个表单页面
1
2
3
4
5
<form:form action="register.action" method="post">
<form:input path="name" onblur="javascript:findExistedUser()"/>
<form:input path="age"/>
<input type="submit" value="Next" name="_target1" />
</form:form>




path 中的属性 name 对应的是表单对象 RegisterForm 的 name 属性。Javascript 方法 findExistedUser 会调用 DWR 产生的 javascript 对象的 findExistedUser 方法来判断是否存在该用户。
返回列表