[b]一 DWR配置[/b]
1、web.xml
2、dwr.xml
控制台输出:
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