1、获得对象
2、获得List对象
3、添加用户
1、 异常处理
1、public class User {
private int id;
private String username;
private Group group;
2、public class Group {
private int id;
private String name;
3、编写MyDwr类
public class MyDwr {
public String hello(String world){
System.out.println("hello "+world);
return "hello "+world;
}
//怎么处理对象
public User load(){
User u = new User(1,"张三",new Group(1,"财务处"));
return u;
}
public List<User> list(){
List<User> users = new ArrayList<User>();
users.add(new User(1,"张三",new Group(1,"财务处")));
users.add(new User(2,"李四",new Group(2,"科技处")));
users.add(new User(3,"王五",new Group(3,"宣传部")));
System.out.println("已进入该方法");
return users;
}
public void add(User user){
System.out.println(user);
}
public void deleteUser(){
throw new MyException("在删除用户的时候有错");
}
}
4、编写测试类:测试返回对象类型
Dwr01.jsp
<script type="text/javascript" src="/dwr-first/dwr/engine.js"></script>
<script type="text/javascript" src="/dwr-first/dwr/util.js"> </script>
<script type="text/javascript" src="/dwr-first/dwr/interface/MyDwr.js"></script>
<script type="text/javascript">
MyDwr.load(loadUser);
function loadUser(user){
alert(user.id+","+user.username+","+user.group.id+","+user.group.name);
}
</script>
要想在js中调用返回对象(load方法)的方法,则需在dwr.xml中设置该类的转换器,因为间接地访问了group类的属性所以也许转换Group类
<create creator="new" javascript="MyDwr">
<param name="class" value="org.konghao.dwr.model.MyDwr" />
</create>
<convert converter="bean" match="org.konghao.dwr.model.User"/>
<convert converter="bean" match="org.konghao.dwr.model.Group"/>
编写测试类:测试返回List集合类型
Dwr02.jsp
MyDwr.list(listUser);
function listUser(users){
for(var i=0;i<users.length;i++){
alert(users[i].username +","+users[i].group.name );
}
}
可以再上面的基础上无需改动dwr.xml文件的内容(即返回集合与返回集合中的单个元素dwr.xml配置方式是一样的)。
编写测试类 :传入对象类型的参数
<script type="text/javascript" src="/dwr-first/dwr/engine.js"></script>
<script type="text/javascript" src="/dwr-first/dwr/util.js"> </script>
<script type="text/javascript" src="/dwr-first/dwr/interface/MyDwr.js"></script>
<script type="text/javascript">
var user = {id:1,username:"李四" ,group:{id:2,name:"网络中心"}};
MyDwr.add(user);
</script>
由代码可以知道,在browser中构造的是一个json对象进行传值的
需转换两个类,dwr.xml的配置同上
编写测试:dwr对异常的处理
在用dwr来处理异常的时候通常转换两个类java.lang.Exception 和java.lang.StackTraceElement
<convert converter="exception" match="java.lang.Exception" />
<convert converter="bean" match="java.lang.StackTraceElement"/>
//MyDwr.deleteUser(
// function(data){
// alert(data);
// }
//);
页面弹出对话框中的内容是“在删除用户的时候有错”
如果没有设置
//MyDwr.deleteUser(
// function(data){
// alert(data);
// }
//);
页面弹出对话框中的内容是Error
为什么会得到Error呢?
因为未配置任何异常处理的时候他使用这样一个json,里面有个属性叫message,他会自动输出message的内容Error
{
javaClassName:’java.lang.Throwable”,
message:’Error’
}
在dwr.xml中两个异常类经过转换之后异常发生时可以得到异常的具体信息:
通过原始局的方式来操作
<script type="text/javascript" src="/dwr-first/dwr/engine.js"></script>
<script type="text/javascript" src="/dwr-first/dwr/util.js"> </script>
<script type="text/javascript" src="/dwr-first/dwr/interface/MyDwr.js"></script>
<script type="text/javascript">
MyDwr.delete ({
callback:deleteUser,
errorHandler:function(msg,exception){
//参数分别是异常的错误消息 ,异常对象
alert(msg);
alert(exception.javaClassName);
for(var ea in exception){
alert(ea);//对话框弹出的是exception对象当中的属性
}
alert(dwr.util.toDescriptiveString(exception,2));
//打印的是对象的描述性字符串
}
});
function deleteUser(data){
}
</script>