Dwr入门知识进阶二
1、JavaScript的数据类型与Java数据类型的关系JavaScriptJavaArray数组List、Collection、数组BooleanBooleanObjectMap、Java BeanStringStringDateDateNumbersInt、double、float等数值XML DomDomundefinednull
2、Java组件的编写和发布以及客户端引用
1)Java组件必须是一个具体类(因为接口、抽象类反射机制无法实例化)
2)实体类必须遵循Java Bean规范即实现Getter和Setter
3)配置文件中Allow部分的Create元素的JavaScript属性的值要唯一
4)如果存在Java Bean需要转换则要配置Allow部分的Convert元素
5)客户端引用业务组件要以dwr/interface/xxx.js的路径引用JS文件
3、典型调用示例和回调函数
在进阶一中我们已经熟悉了简单字符串示例,下面我们来看数组集合类型的示例程序:
JavaBean的源代码:
public String[] testArray(){return new String[]{"世界","你好"};}public String[][] testArray2(){return new String[][]{new String[]{"A1","A2"},new String[]{"B1","B2","B3"}};}public List testList(int size){List list = new ArrayList(size);for(int i=0; i<size; i++){list.add("someDAta"+i);}return list;}public List testList2(){List list = new ArrayList();for(int i=0; i<3; i++){String[] ss = new String[]{"A"+i,"B"+i,"C"+i};list.add(ss);}return list;}public Map testMap(){Map map = new HashMap();map.put("key1", "世界");map.put("key2", "你好");return map;}
dwr.xml文件添加代码
<create creator="new" javascript="test2"> <param name="class" value="com.dwr.Test2"/> </create>
jsp页面javascript代码:
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=GB18030"><title>Insert title here</title><script type="text/javascript" src="dwr/engine.js"></script><script type="text/javascript" src="dwr/util.js"></script><script type="text/javascript" src="dwr/interface/test2.js"></script><script type="text/javascript">function testArray(){test2.testArray(function(data){alert("一维数组的长度是:"+data.length);for(var i=0; i<data.length; i++){alert(data);}});}function testList(){test2.testList(5,function(data){alert("List的长度是:"+data.length);for(var i=0; i<data.length; i++){alert(data);}});}function testArray2(){test2.testArray2(function(data){alert("二维数组的长度是:"+data.length);for(var i=0; i<data.length; i++){for(var j=0; j<data.length; j++){alert(data);}}});}function testList2(){test2.testList2(function(data){alert("List的长度是:"+data.length);for(var i=0; i<data.length; i++){for(var j=0; j<data.length; j++){alert(data);}}});}function testMap01(){test2.testMap(function(data){alert(data.key1);alert(data["key2"]);});}function testMap02(){test2.testMap(function(data){for(var p in data){alert("key="+p+",value="+data);}});}</script></head><body><a href="#" >Test2.testArray</a><a href="#" >Test2.testList</a><a href="#" >Test2.testArray2</a><a href="#" >Test2.testList2</a><a href="#" >Test2.testMap - 获取对应key的值</a><a href="#" >Test2.testMap - 循环获取一个Map中的key和value</a></body></html>
页:
[1]