上一个项目使用的是spring MVC 客户需要做Ajax应用;所以就找了一些资料研究了一下,比如DWRdojo prototypeJSON-RPC, trimpath 等等,发现很多不适合我们,比如DWR要生成客户端js,服务器端还要部署,麻烦;dojo又太慢了;经过一轮淘汰剩下了prototypetrimpath;所以最终就选这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;

    }