Struts2绑定Jquery EasyUI实例



Struts2绑定Jquery EasyUI实例.介绍:

 

jQuery EasyUI是一组基于jQuery的UI插件集合,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。对于一些不喜欢做页面的程序猿来说这是个很好的绑定数据的插件。jQuery EasyUI为我们提供了大多数UI控件的使用,如:accordion,combobox,menu,dialog,tabs,tree,validatebox,window等等 。 jQuery EasyUI绑定数据类型是JSON类型。

1、   导入相应的jar包(非常重要,不要导入错了,我开始就是导入错了害得我整了一天)。

 

struts2 jar包

如果要是使用struts2-core-2.16.jar的话需要依赖的包有 json-lib2.1.jar、json-plugin-0.33.jar、ezmorph-1.0.3.jar、commons-beanutils-1.7.0.jar或1.8        这几个包的版本号必须是这样的,否则出错(  org.apache.catalina.core.StandardWrapperValve invoke

严重: Servlet.service() for servlet [default] in context with path [/TransactionSystem] threw exception [Filter execution threw an exception] with root         cause)

另外导入需要.commons-httpclient.jar  以及SSH相关jar包。

 

2、struts.xml文件配置:使用jsonplugin将属性转换成json对象,extends=”json-default”result type要为json
root 是只返回该内容,resultObj与action中的属性名字一样,即要返回给页面的值

 

  1. <constant name=”struts.i18n.encoding” value=”GBK” />
  2.    <package name=”admin” namespace=”/admin” extends=”json-default” >
  3.          <action name=”index”>
  4.             <result>index.jsp</result>
  5.          </action>
  6.       <action name=”*-*” class=”TransactionSystem.action.{1}Action” method=”{2}”>
  7.             <result type=”json” >
  8.             <param name=”root”>resultObj</param>
  9.             </result>
  10.       </action>
  11.    </package>
 <constant name="struts.i18n.encoding" value="GBK" />
    <package name="admin" namespace="/admin" extends="json-default" >
          <action name="index">
             <result>index.jsp</result>
          </action>
       <action name="*-*" method="{2}">
       		<result type="json" >
       		<param name="root">resultObj</param>
       		</result>
       </action>
    </package>

3、*.jsp代码

 


 

  1. <html>
  2.   <head>
  3.     <base href=”<%=basePath%>”>
  4.     <title>交易码列表</title>
  5.     <meta http-equiv=”pragma” content=”no-cache”>
  6.     <meta http-equiv=”cache-control” content=”no-cache”>
  7.     <meta http-equiv=”expires” content=”0″>
  8.     <meta http-equiv=”keywords” content=”keyword1,keyword2,keyword3″>
  9.     <meta http-equiv=”description” content=”This is my page”>
  10.     <!–
  11.     <link rel=”stylesheet” type=”text/css” href=”styles.css”>
  12.     –>
  13. <script type=”text/javascript” src=”easyUI/jquery-1.6.min.js”></script>
  14. <script type=”text/javascript” src=”easyUI/jquery.easyui.min.js”></script>
  15. <link rel=”stylesheet” href=”easyUI/themes/default/easyui.css” type=”text/css”></link>
  16.   <link rel=”stylesheet” href=”easyUI/themes/icon.css” type=”text/css”></link>
  17.     <script>
  18.         $(‘#tt’).datagrid({
  19.                 url: ‘admin/TransCode-list’,
  20.                 title: ‘DataGrid – ContextMenu’,
  21.                 width: 700,
  22.                 height: ‘auto’,
  23.                 fitColumns: true,
  24.                 columns:[[
  25.                     {field:'id',title:'ID',width:80},
  26.                     {field:'tranNo',title:'交易码',width:120},
  27.                     {field:'tranName',title:'交易名称',width:80,align:'right'},
  28.                     {field:'cr_Num',title:'CR号',width:80,align:'right'}
  29.                 ]],
  30.                 onHeaderContextMenu: function(e, field){
  31.                     e.preventDefault();
  32.                     if (!$(‘#tmenu’).length){
  33.                         createColumnMenu();
  34.                     }
  35.                     $(‘#tmenu’).menu(‘show’, {
  36.                         left:e.pageX,
  37.                         top:e.pageY
  38.                     });
  39.                 }
  40.             });
  41.         });
  42.     </script>
  43.   </head>
  44.   <body >
  45.     <table id=”tt”></table>
  46.   </body>
  47. </html>
<html>
  <head>
    <base href="<%=basePath%>">

    <title>交易码列表</title>

	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
<script type="text/javascript" src="easyUI/jquery-1.6.min.js"></script>
<script type="text/javascript" src="easyUI/jquery.easyui.min.js"></script>
<link rel="stylesheet" href="easyUI/themes/default/easyui.css" type="text/css"></link>
  <link rel="stylesheet" href="easyUI/themes/icon.css" type="text/css"></link>
	<script>
		$('#tt').datagrid({
				url: 'admin/TransCode-list',
				title: 'DataGrid - ContextMenu',
				width: 700,
				height: 'auto',
				fitColumns: true,
				columns:[[
					{field:'id',title:'ID',width:80},
					{field:'tranNo',title:'交易码',width:120},
					{field:'tranName',title:'交易名称',width:80,align:'right'},
					{field:'cr_Num',title:'CR号',width:80,align:'right'}
				]],
				onHeaderContextMenu: function(e, field){
					e.preventDefault();
					if (!$('#tmenu').length){
						createColumnMenu();
					}
					$('#tmenu').menu('show', {
						left:e.pageX,
						top:e.pageY
					});
				}
			});
		});				
	</script>
  </head>
  <body >	
	<table id="tt"></table>
  </body>
</html>

4、java代码

 

  1. public class TransCodeAction extends ActionSupport {
  2.         private List<TransCode> transCodes;
  3.         private TransCodeManager transCodeManager;
  4.         private int id;
  5.         private JSONObject resultObj;// 要返回到页面的JSON数据,一定要有getter,setter方法。
  6.         public JSONObject getResultObj() {
  7.             return resultObj;
  8.         }
  9.         public void setResultObj(JSONObject resultObj) {
  10.             this.resultObj = resultObj;
  11.         }
  12.         public String list() {
  13.             HttpServletResponse resp = ServletActionContext.getResponse();
  14.             resp.setContentType(“application/json”);
  15.             transCodes = transCodeManager.getAll(); // 通过*DAO中Hibernate读取数据
  16.             ArrayList al = new ArrayList();
  17.             for (TransCode tc : transCodes) {
  18.                 Map<String, Object> m = new HashMap<String, Object>();
  19.                 m.put(“id”, tc.getId());
  20.                 m.put(“tranName”, tc.getTranName());
  21.                 m.put(“tranNo”, tc.getTranNo());
  22.                 m.put(“cr_Num”, tc.getCr_Num());
  23.                 al.add(m);
  24.             }
  25.             Map<String, Object> json = new HashMap<String, Object>();
  26.             json.put(“total”, transCodes.size());// total键 存放总记录数,必须的json.put(“rows”, transCodes.size());transCodes.size()返回的数据条数
  27.             json.put(“rows”, al);// rows键 存放每页记录 list,必须是“rows”关键词
  28.             resultObj = JSONObject.fromObject(json);// 格式化result一定要是JSONObject
  29.             return SUCCESS;
  30.         }
  31.         public List<TransCode> getTransCodes() {
  32.             return transCodes;
  33.         }
  34.         public void setTransCodes(List<TransCode> transCodes) {
  35.             this.transCodes = transCodes;
  36.         }
  37.         public TransCodeManager getTransCodeManager() {
  38.             return transCodeManager;
  39.         }
  40.         @Resource
  41.         public void setTransCodeManager(TransCodeManager transCodeManager) {
  42.             this.transCodeManager = transCodeManager;
  43.         }
  44.     }
public class TransCodeAction extends ActionSupport {
		private List<TransCode> transCodes;
		private TransCodeManager transCodeManager;
		private int id;
		private JSONObject resultObj;// 要返回到页面的JSON数据,一定要有getter,setter方法。

		public JSONObject getResultObj() {
			return resultObj;
		}

		public void setResultObj(JSONObject resultObj) {
			this.resultObj = resultObj;
		}

		public String list() {
			HttpServletResponse resp = ServletActionContext.getResponse();
			resp.setContentType("application/json");
			transCodes = transCodeManager.getAll(); // 通过*DAO中Hibernate读取数据
			ArrayList al = new ArrayList();
			for (TransCode tc : transCodes) {
				Map<String, Object> m = new HashMap<String, Object>();
				m.put("id", tc.getId());
				m.put("tranName", tc.getTranName());
				m.put("tranNo", tc.getTranNo());
				m.put("cr_Num", tc.getCr_Num());
				al.add(m);
			}
			Map<String, Object> json = new HashMap<String, Object>();
			json.put("total", transCodes.size());// total键 存放总记录数,必须的json.put("rows", transCodes.size());transCodes.size()返回的数据条数
			json.put("rows", al);// rows键 存放每页记录 list,必须是“rows”关键词
			resultObj = JSONObject.fromObject(json);// 格式化result一定要是JSONObject

			return SUCCESS;
		}

		public List<TransCode> getTransCodes() {
			return transCodes;
		}
		public void setTransCodes(List<TransCode> transCodes) {
			this.transCodes = transCodes;
		}
		public TransCodeManager getTransCodeManager() {
			return transCodeManager;
		}
		@Resource
		public void setTransCodeManager(TransCodeManager transCodeManager) {
			this.transCodeManager = transCodeManager;
		}
	}

 

// 这里边的json数据格式为:{total=4, rows=[{id=3, tranNo=401563,tranName=现金圈存, cr_Num=1117}, {id=4, tranNo=401563, tranName=现金圈存, cr_Num=1117}]}

//resultObj数据格式为:{“total”:2,”rows”:[{"id":2,"tranNo":401563,"tranName":"现金圈存","cr_Num":1117},{"id":3,"tranNo":401563,"tranName":"现金圈存","cr_Num":1117}]} // 返回到页面绑定到Jquery EasyUI中datagrid的数据一定要是上面的resultObj数据格式

 

5、效果图

 

http://blog.csdn.net/zxfc88/article/details/8703157