jmaki 是SUN一直大力推进的Ajax框架,利用widget的实现原理,封装了dojo,google,yahoo之类ajax库。使用jmaki的同时,又可以用到许多其他开源库的,非常好的ajax组件。我在这里演示一下,集成dojo.table的demo.
首先,先要明确怎么样,才能让jmaki和struts集成。这两个同时是web前台的框架。我们在开发struts的时候,User.jsp --> UserAction --> UserList.jsp,比如是上面的一个流程,一般是通过在UserAction里面request.setAttribte("list",list),设置一个request属性,然后UserList.jsp通过request.getAttribute("list")读取出来,或者直接用struts标签或jstl标签读取list对象,然后显示这个list的内容。
现在我们有了ajax技术,他其实可以不这样去传递对象了。还是这样的流程,User.jsp --> UserAction --> UserList.jsp。这时我们不用在UserAction设置属性,只是用struts控制流程。等打开UserList.jsp的页面以后,再设定一个url,去读取这个list的内容。比如:<a:ajax name="dojo.table" service="http://localhost:8080/test/ListServlet" />。这个过程其他和读二进制流的概念差不多。取回来的可能是一个JSon串,也可能是XML文件。JSON串的方式就叫做Rest,XML方式可以直接调度Web Services。
其实只要明白,list不是通过UserAction传到UserList.jsp,而是UserList.jsp再访问另外的Action去取的就行了。
下面贴一些代码,是项目里的,还杂着Xdoclet,spring等等你的其他的框架的东西,有点懒得挑出来了,凑合着看。
流程的Action
转向CategoryList.jsp
(上面的分页,还有一些东西,还没有做完。只是为了演示demo用的) <a:ajax name="dojo.table" service="http://localhost:8880/DVS/jsp/biz/equipcategory/jmaki.do?action=categoryList" /> jsp页面,通过链接再去启动table. TableAction,这里是提供JSON串的类。
CategoryAction转发请求给CategoryList.jsp
CategoryList.jsp从DojoTableAction中取回JSON组成table