在Struts2.0中使用JSON结合DWR和EXT
在Struts2.0中使用JSON结合DWR和EXT
如题,大家在Struts2.0中使用json是一般都选择了jsonplugin,我对jsonplugin不太熟悉,因此我选择了json-lib这个jar包。不知道jsonplugin对bean的支持是不是很好,还是只能对action进行序列化。好了现在说一下我的思路。
我先用Json-lib将我的bean进行序列化,当然此过程是放在了我的一个service中的。然后配置DWR公开service的接口。在 EXT调用DWR的过程中可能会有些小麻烦,因为EXT官方的程序中没有支持DWR做数据源。在网上找到一个强人写的可做EXT数据源的DWRJS略加修改就成了我的DWRJSONJS,只是小小的改动了一下。下面贴一下布分代码。
这是我改过的JS:
js 代码
注:上面程序中的reader没有作用了。我用的是EXT中的JSONREADER。
下面是EXTGrid的代码:
js 代码
以下是业务程的代码。
java 代码1. public JSONObject getPageData(String queryString, int cpage, int pageSize,Serializable[] params) throws DFLogError 2. { 3. List results; 4. JPage pageData = null; 5. int total; 6. Session s = this.getSession(); 7. try 8. { 9. Query query = this.getQuery(queryString, params, s); 10. total = query.list().size(); 11. results = query.setFirstResult(cpage).setMaxResults(pageSize).list(); 12. pageData = new JPage(total, cpage); 13. pageData.setData(results); 14. return JSONObject.fromBean(pageData,StringUtils.commaDelimitedListToStringArray("roles,authorities")); 15. } 16. catch (HibernateException e) 17. { 18. log.error("Error in BaseDao.getPageData(String hql, int cpage, int pageSize)",e); 19. throw new DFLogError("Error in BaseDao.getPageData(String hql, int cpage, int pageSize)",e); 20. } 21. finally 22. { 23. this.closeSession(s); }