DWR中:Java对象与JS对象互换

[b]一 DWR配置[/b]
1、web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>ajaxDWR</display-name>
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<description></description>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
</web-app>


2、dwr.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<allow>
<create creator="new" javascript="ServiceArea">
<param name="class" value="onlyfun.caterpillar.Service" />
</create>
<create creator="new" javascript="Office">
<param name="class" value="onlyfun.caterpillar.Office" />
</create>

<!--可以将js对象转换为Java-->
<convert converter="bean" match="onlyfun.caterpillar.Person" />
</allow>
</dwr>



/**
*Java对象转换为JS对象,用JS调用Java的方法
*
*/
function change(){
var objSelect=document.getElementById('mySelect');
var index = objSelect.selectedIndex;

if(index >= 0 ) {
ServiceArea.getOptions(index,result);
}
}

function result(list){
DWRUtil.removeAllOptions("city");
DWRUtil.addOptions("city", list);
}

/**
*Java对象转换为JS对象,用JS调用Java的方法
*
*/

function fun(){
var person = {id:2,name:"emily",age:22};
alert(person);
Office.setPerson(person);
}


<body> 
城市: <select id="mySelect" onchange="change()">
<option id=0 value="0">please select</option>
<option id=1 value=1>成都</option>
<option id=2 value=2>重庆</option>
</select>
区域: <select id="city">
<option>please select left</option>
</select>



public class Service {
public Object[] getOptions(int id){
List<String> options = new ArrayList<String>();
if (id == 0) {
options.add("please select left");
}
else if(id == 1) {
options.add("锦江区");
options.add("武侯区");
options.add("金牛区");
}
else if(id == 2){
options.add("渝中区");
options.add("渝北区");
options.add("江北区");
}

return options.toArray();
}

}


public class Person {
private int id;
private String name;
private int age;

public int getId() {
return id;
}

public String getName() {
return name;
}

public void setId(int id) {
this.id = id;
}

public void setName(String name) {
this.name = name;
}

public void setAge(int age) {
this.age = age;
}

public int getAge() {
return age;
}

}


public class Office {
private Person person;

public Person getPerson() {
return person;
}

public void setPerson(Person person) {
this.person = person;
if(person != null ){
System.out.println("person.name="+person.getName());
System.out.println("person.id="+person.getId());
System.out.println("person.age="+person.getAge());
}
}

}



控制台输出:

person.age=22
person.name=emily
person.id=2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值