1、Struts2Spring3MyBatis3整合ExtJS完成ColumnTree 二三、加入Struts2框架1、准备工作添加jar文件如下:org.springframework.web-3.0.5.RELEASE.jarorg.springframework.aop-3.0.5.RELEASE.jar这2个jar包是spring的context所依赖的jar包struts2-spring-plugin-2.2.3.jar是struts整合spring的jar包2、在web.xml加入struts2的控制器struts2org.apache.struts2.dispatcher.Filte
2、rDispatcherstruts2/*3、在src目录添加struts.xml启动后,可以看到首页index的页面就基本整合完成。4、首先看看Action代码,代码如下:packagecom.hoo.action;importjava.util.ArrayList;importjava.util.List;importjavax.inject.Inject;importjavax.inject.Named;importorg.springframework.stereotype.Component;importcom.hoo.biz.AccountBiz;importcom.hoo.enti
3、ty.Account;import com.opensymphony.xwork2.ActionSupport;/* * function: Account Action * author hoojo * createDate 2011-5-11 下午12:03:05 * file AccountAction.java * package com.hoo.action * project S2SMyBatis * blog * email hoojo_ * version 1.0 */ComponentpublicclassAccountActionextendsActionSupport /
4、* * author Hoojo */privatestaticfinallongserialVersionUID = -973535478139284399L; InjectNamed(accountBiz)privateAccountBiz biz;private Account acc;private List results = newArrayList();public ListgetResults() return results; public Account getAcc() returnacc; publicvoidsetAcc(Account acc) this.acc =
5、 acc; public String add() throws Exception if (!biz.addAccount(acc) this.addActionMessage(添加数据失败);return ERROR; return SUCCESS; public String show() throws Exception results = biz.getList();returnshow; public String remove() throws Exception return SUCCESS; public String edit() throws Exception retu
6、rn SUCCESS; public String treeData() throws Exception results = biz.getList();returntree; 这个Action被注解成Component,那么在spring的applicationContext配置文件中就不需要进行标签的配置了。上面注入了AccountDao,完成相关操作。5、由于Struts2要和Spring进行整合,所以struts的配置会有点不同account!show.action/show.jsp上面的class不再是AccountAction的classpath,而是spring容器中配置的be
7、an。就是通过Component注解过的AccountAction,被注解注释过后它的id默认是类名称首字母小写。所以上面的action的配置是accountAction。6、由于要整合ExtJS,所以这里用到struts2-json-plugin-2.2.3.jar这个插件,将其加入到lib库中,struts.xml更改成:/error.jspaccount!show.action/show.jspaccAccountAction中的treeData方法返回的tree,在account这个action配置中找到tree的result,将result的type配置成json。表示该result
8、的数据以json的方式展示。tree这个result还配置了一个param,名称为excludeProperties表示排除的属性。这个参数将排除当前Action中的acc属性。也就是说这个属性将不会得到json的转换。其他属性将会被转换成json。7、前台页面index.jsp显示所有添加数据JSONshow.jspbasehref=show all data $data #删除 | 修改Struts标签和OGNL表达式显示数据add.jspbasehref=add四、整合ExtJS1、添加ext的库,版本是2.2.2需要添加column-tree.css/* * Ext JS Librar
9、y 2.2.1 * Copyright(c) 2006-2009, Ext JS, LLC. * licensing * * */.x-column-tree.x-tree-node zoom:1;.x-column-tree.x-tree-node-el /*border-bottom:1px solid #eee; borders? */zoom:1;.x-column-tree.x-tree-selected background: #d9e8fb;.x-column-tree.x-tree-node a line-height:18px;vertical-align:middle;.x
10、-column-tree.x-tree-node a span.x-column-tree.x-tree-node.x-tree-selected a spanbackground:transparent;color:#000;.x-tree-col float:left;overflow:hidden;padding:0 1px;zoom:1;.x-tree-col-text, .x-tree-hd-text overflow:hidden; -o-text-overflow: ellipsis;text-overflow: ellipsis;padding:3px 3px 3px 5px;
11、white-space: nowrap;font:normal 11px arial, tahoma, helvetica, sans-serif;.x-tree-headers background: #f9f9f9 url(./ext2/resources/images/default/grid/grid3-hrow.gif) repeat-x 0 bottom;cursor:default;zoom:1;.x-tree-hd float:left;overflow:hidden;border-left:1px solid #eee;border-right:1px solid #d0d0
12、d0;.task background-image:url(./shared/icons/fam/cog.png) !important;.task-folder background-image:url(./shared/icons/fam/folder_go.png) !important;Ext.tree.ColumnTree.js/* * Ext JS Library 2.2.1 * Copyright(c) 2006-2009, Ext JS, LLC. * licensing * * */Ext.tree.ColumnTree = Ext.extend(Ext.tree.TreeP
13、anel, lines:false,borderWidth: Ext.isBorderBox ? 0 : 2, / the combined left/right border for each cellcls:x-column-tree,onRender :function()Ext.tree.ColumnTree.superclass.onRender.apply(this, arguments);this.headers = this.body.createChild( cls:x-tree-headers,this.innerCt.dom);var cols = this.column
14、s, c;vartotalWidth = 0;for(var i = 0, len = cols.length; i len; i+) c = colsi;totalWidth += c.width;this.headers.createChild(cls:x-tree-hd + (c.cls?c.cls+-hd:),cn: cls:x-tree-hd-text,html: c.header ,style:width:+(c.width-this.borderWidth)+px; ); this.headers.createChild(cls:x-clear);/ prevent floats
15、 from wrapping when clippedthis.headers.setWidth(totalWidth);this.innerCt.setWidth(totalWidth); );Ext.tree.ColumnNodeUI = Ext.extend(Ext.tree.TreeNodeUI, focus: Ext.emptyFn, / prevent odd scrolling behaviorrenderElements :function(n, a, targetNode, bulkRender)this.indentMarkup = n.parentNode ?n.pare
16、ntNode.ui.getChildIndent() : ;var t = n.getOwnerTree();var cols = t.columns;varbw = t.borderWidth;var c = cols0;varbuf = ,this.indentMarkup, n.text | (c.renderer ?c.renderer(ac.dataIndex, n, a) : ac.dataIndex),;for(var i = 1, len = cols.length; i len; i+) c = colsi;buf.push(,(c.renderer ? c.renderer
17、(ac.dataIndex, n, a) : ac.dataIndex),); buf.push(,);if(bulkRender != true&n.nextSibling&n.nextSibling.ui.getEl()this.wrap = Ext.DomHelper.insertHtml(beforeBegin,n.nextSibling.ui.getEl(), buf.join();elsethis.wrap = Ext.DomHelper.insertHtml(beforeEnd, targetNode, buf.join(); this.elNode = this.wrap.childNodes0;this.ctNode = this.wrap.childNodes1;varcs = this.elNode.firstChild.childNodes;this.indentNode = cs0;this.ecNode = cs1;this.iconNode = cs2;this.anchor = cs3;this.textNode = cs3.firstChild;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1