一 :客户端 js 的数组 来 映射 服务器端的 Map 对象 :
首先我们服务器端 有一个java方法 :
/** */ /**
* 输入一个map ,原封不动的输出来
* @param arg
* @return Map
*/
public Map object(Map arg)
{
return arg;
}
在客户端我们有 这样的 js 代码 :
< script language = " javascript " >
var buffalo = new Buffalo(endPoint)

function sendObject()
{
var a =
{} ;
a[Buffalo.BOCLASS] = " java.util.Map " ;
a[ " a " ] = " A " ;
a[ " b " ] = true ;
a[ " c " ] = 123.4 ;
var u =
{} ;
u[Buffalo.BOCLASS] = " net.buffalo.demo.simple.User " ;
u.id = 234 ;
u.name = " <xml here>& " ;
u.age = 17 ;
u.sex = false ;
u.memo = " very beautiful " ;
a[ " u " ] = u;
buffalo.remoteCall( " simpleService.object " ,[a], function(reply)
{
alert( " return user memo: " + reply.getResult()[ " u " ].memo);
} );
}
</ script > 注意 这 2 句 :
a[Buffalo.BOCLASS] = "java.util.Map";
u[Buffalo.BOCLASS] = "net.buffalo.demo.simple.User";二 :将表单序列化为一个dto对象
首先我们在服务器端有一个dto对象 :

public class User
{
private int id;
private String name;
private int age;
private boolean sex;
private String memo;

public User()
{
}



}接下来我们在客户端有下列代码 :
<script language="javascript">
var buffalo = new Buffalo(endPoint);

function doAnotherSubmit()
{
var userObj = Buffalo.Form.formToBean("form1", "net.buffalo.demo.form.User");
buffalo.remoteCall("userService.createUser", [userObj], function(reply)
{
$("form_infomsg").innerHTML="Form has been submited, username is: " + reply.getResult().username;
})
}
</script>注意这2句 :
var userObj = Buffalo.Form.formToBean("form1", "net.buffalo.demo.form.User");form1表单中 有 User类 中属性 同名 的 表单项 , 这样 userObj 就可以作为在客户端 映射 User 的参数了。
另外 :
$("form_infomsg")可以指页面中 :
<div id="form_infomsg" style="color:blue"></div>
表示的位置。
三 :数据绑定
首先 我们在服务器端有 这样一个变量 :

public static List employees()
{
if (employees.size() > 0) return employees;
employees.add(new EmployeeBean("1", "Greg", "Murray"));
employees.add(new EmployeeBean("2", "Greg", "Murphy"));
employees.add(new EmployeeBean("3", "George", "Murphy"));
employees.add(new EmployeeBean("4", "George", "Murray"));
employees.add(new EmployeeBean("5", "Peter", "Jones"));
employees.add(new EmployeeBean("6", "Amber", "Jones"));
employees.add(new EmployeeBean("7", "Amy", "Jones"));
employees.add(new EmployeeBean("8", "Bee", "Jones"));
employees.add(new EmployeeBean("9", "Beth", "Johnson"));
employees.add(new EmployeeBean("10", "Cindy", "Johnson"));
employees.add(new EmployeeBean("11", "Cindy", "Murphy"));
employees.add(new EmployeeBean("12", "Duke", "Hazerd"));
return employees;
}在客户端我们有 这样的代码 :
var buffalo = new Buffalo(endPoint);
function doCompletion()
{
buffalo.bindReply("ajaxService.filterEmployees",[target.value], "names");
}同时我们在页面中有 :
<TABLE id="names" border="1" jheight="0">结果 :
还有一种形式是 :

buffalo.remoteCall("simpleService.allLocales", [], function(reply)
{
/** *//**Buffalo.bind("area", reply.getSource());*/
Buffalo.bind(tableId, reply.getResult());
})注意这句
Buffalo.bind(tableId, reply.getResult());
本文介绍了使用JavaScript与服务器端进行交互的几种方法,包括如何将客户端的JS数组映射到服务器端的Map对象,如何将HTML表单序列化为DTO对象以及数据绑定的实现方式。
7

被折叠的 条评论
为什么被折叠?



