上一个项目使用的是spring
MVC; 客户需要做Ajax应用;所以就找了一些资料研究了一下,比如DWR,dojo, prototype,JSON-RPC, trimpath 等等,发现很多不适合我们,比如DWR要生成客户端js,服务器端还要部署,麻烦;dojo又太慢了;经过一轮淘汰剩下了prototype和trimpath;所以最终就选这2个了;
Prototype在书写普通的js时候,有很多好处,比如简单,实用的很多函数;比如$()系列;
Trimpath提供一个客户端的js模板,如果从服务器回来的数据很复杂,要动态改变Html元素是比较费力的事情;用trimpath就方便许多;
在模板语言的世界里,总有2个东西:模板和模板中的数据;trimpath的模板接受的数据是javascript object,模板则定义在一个不显示的textarea里面;
所以有个问题就是:怎么让ajax调用返回一个javascript对象?
后来,我终于发现了(想起了刘若英)JSON;发现json是个好东东;比xml轻量级,又可以很容易的转换为javascript对象,而且还有java api;唉,开源的世界多美妙;
所以解决方案就是,在springmvc框架中,用response返回json string,给ajax 客户端,然后生成javascript对象,然后,调用trimpath模板,然后,动态修改页面。
代码片段:
public ModelAndView getClient(HttpServletRequest request,
HttpServletResponse response) throws Exception {
JSONObject jsonObject = new JSONObject();
Client
client=clientMgr.getClientByPk(Long.parseLong(request.getParameter("clientId")));
jsonObject.add("client", client);
return ajaxResponse(jsonObject, response);
}
protected ModelAndView ajaxResponse(JSONObject jsonObject,
HttpServletResponse response) throws Exception {
response.setContentType("application/x-json;charset=UTF-8");
response.getWriter().print(jsonObject);
return null;
}