|
|
1.客户端 js 的数组来映射服务器端的 Map 对象
(1).service
public Map object(Map arg) { return arg; }
(2).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.将表单序列化为一个dto(Data Transfer Object)对象
(1).dto对象
public class User { private int id; private String name; private int age; private boolean sex; private String memo; public User() { }}
(2).js
<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>
3.buffalo中使用session
(1).Buffalo为那些需要使用session, request,servletContext对象的服务提供了BuffaloService类,任何服务只需要继承这个类就可以获得容器对象,如request,session, context等。
例:
import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import net.buffalo.server.BuffaloService;class LoginService extends BuffaloService{ public boolean login(String username, String password) { HttpServletRequest request = (HttpServletRequest)getRequest(); HttpSession session = request.getSession(); if (username == "foo" && password="bar") { session.setAttribute("username", username); return true; } else {return false;} }}
(2). 从Buffalo2.0开始,你方便地可以get/set session/cookie/context的值。通过使用RequestContext类,你能以更加轻松的方式全权控制它们的生命周期值。
// Get a thread-safe request contextcontext = net.buffalo.request.RequestContext.getContext();// Get session valueMap session = context.getSession();String username = (String)session.get("username");// Update the session value, will refresh the session immediatelysession.put("username", "newUsername");// cookieMap cookieMap = context.getCookie();Cookie cookie = cookieMap.get("cookieName");// update cookieCookie c = new Cookie("name", "value");cookieMap.put(c.getName(), c);// ServletContextMap application = context.getApplication();Object value = application.get("key");...
注:
1.2.4之前需要继承一个BuffaloService,从1.2.4开始就不需要继承了,引入了线程安全的BuffaloContext对象,只需要通过BuffaloContext.getContext()即可获得一个线程安全的引用,并且对Request的各种属性进行操作。
Map BuffaloContext.getContext().getSession()Map BuffaloContext.getContext().getApplication()Map BuffaloContext.getContext().getCookie() |
|