日期:2014-05-16  浏览次数:20362 次

基于SSH架构上的ajax翻页(json+prototype+jstemplate)

简单实现,不用对TMD的一堆的js的api了解,俺还不是js专员,写的太烂,还是java比较贴心啊。

实现流程:页面new Ajax.Request()==》action中获得page对象==》转换为json对象,保存到response中==》在页面中处理返回对象var data? = res.responseText.evalJSON();(prototype1.5.1支持)==》调用jstemplate模板引擎对页面进行重组$("output").innerHTML = TrimPath.processDOMTemplate("template_jst", data) ,翻页完成了。

具体代码:

页面请求:

js 代码
  1. function?ajaxpage(pno){ ??
  2. ????var?url?=?"${ctx}/admin/usergroup.do?actionMethod=pageAjaxUser"; ??
  3. ????var?pars?=?"pageno="+pno; ??
  4. ????var?myAjax?=?new?Ajax.Request(url,?{method:?'get',?parameters:?pars,?onComplete:?showResult}); ??
  5. } ??
  6. function?showResult(res){ ??
  7. ????var?data??=?res.responseText.evalJSON(); ??
  8. ?????$("output").innerHTML?=?TrimPath.processDOMTemplate("template_jst",?data); ??
  9. }??

?

action:

java 代码
  1. public?ActionForward?pageAjaxUser(ActionMapping?mapping,?ActionForm?form, ??
  2. ????????????HttpServletRequest?request,?HttpServletResponse?response) ??
  3. ????throws?Exception?{ ??
  4. ????????try?{ ??
  5. ????????????String?pno?=?request.getParameter("pageno"); ??
  6. ????????????int?pageNo?=?1; ??
  7. ????????????if?(?pno?!=?null?||?!"".equals(pno)){ ??
  8. ????????????????pageNo?=?Integer.parseInt(pno); ??
  9. ????????????} ??
  10. ????????????Page?page?=?userManager.query(pageNo,?10); ??
  11. ????????????Object?o?=?page.getResult(); ??
  12. ????????????if?(?o?!=?null?){ ??
  13. ????????????????List?l?=?(List)o; ??
  14. ????????????????JSONObject?json?=?new?JSONObject(); ??
  15. ????????????????json.put("users",?ToJSONArray(l)); ??
  16. ????????????????json.put("page",?ToJSONObject(page)); ??
  17. ????????????????saveJSON(response,?json); ??
  18. ????????????} ??
  19. ????????}?catch?(Exceptio