?
struts2-convention.plugin 插件与extjs 整合.
?
? ?注:..其实这种struts2 的注解方式也可以与jquery,ajax ?结合...
在 www.shoujicaipiao.com.cn 这个网站中就用到了jquery+struts2-convention-plugin
?
技术结构:
struts2+spring+jpa+extjs+mysql
?
包结构:
?
运行界面:
?
?
web.xml 省略.
?
struts.xml
?
?
<struts> <constant name="struts.enable.DynamicMethodInvocation" value="true" /><!-- 开启动态方法 --> <constant name="struts.i18n.encoding" value="gbk"></constant> <constant name="struts.devMode" value="false" /><!-- 开启开发者模式 --> <!-- 不用dojo的及struts2复杂标签样式的就把主题设置为simple,这样可以不加载多余的模板。 --> <constant name="struts.ui.theme" value="simple" /> <constant name="struts.custom.i18n.resources" value="messageResource" /> <!-- 确定搜索包的路径。只要是结尾为action的包都要搜索 --> <constant name="struts.convention.package.locators" value="action" /> <!-- 一个action名字的获取。比如为HelloWorldAction。按照配置,actionName为hello_world --> <constant name="struts.convention.action.suffix" value="Action" /> <constant name="struts.convention.action.mapAllMatches" value="true" /> <constant name="struts.convention.action.name.separator" value="-" /> <!-- 设置默认的父包,一般我们都设置一个default包继承自struts-default --> <constant name="struts.convention.default.parent.package" value="rest-default" /> <!-- Add packages here --> </struts>
?
applicationContext.xml
?
?
<context:component-scan base-package="com.chenxi"/> <context:property-placeholder location="classpath:spring.properties"/> <!-- 数据源,使用 src 下的 c3p0.properties 配置 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"/> <!-- JPA实体管理工厂配置 --> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="showSql" value="${showSql}"/> <property name="database" value="${database}"/> <property name="databasePlatform" value="${dialect}"/> </bean> </property> </bean> <!-- 实体管理器配置 --> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory"/> </bean> <!-- 以注解驱动方式配置事务 --> <tx:annotation-driven transaction-manager="transactionManager"/>
?
ManagerAction
?
?
@Component @Scope("prototype") @ParentPackage("json-default") @Results({ @Result(name="success",type="json",params={"managerList","managerList"}) }) public class ManagerAction extends ActionSupport{ private static final long serialVersionUID = 1L; private int limit; private int start; private int totalProperty; private List<Cardcategory> managerList; private int id; @Autowired private ManagerService managerService; public String getManager(){ try { start = start > 1 ? start/limit +1 : start; managerList = managerService.getM(start,limit); } catch (Exception e) { e.printStackTrace(); } return "success"; } }?
?
manager.jsp
?
?
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> </head> <script type="text/javascript" src="js/manager.js" charset="GBK"</script> <body> <div id="sadf"></div> </body> </html>?
?manager.js--简单的grid实现
?
?
var store = new Ext.data.Store( { proxy : new Ext.data.HttpProxy( { url : 'manager/0/getManager' }), reader : new Ext.data.JsonReader( { root : 'managerList', totalProperty : 'totalProperty', id : 'id' }, [ { name : 'categoryname', mapping : 'categoryname', type : 'string' }, { name : 'cardcost', mapping : 'cardcost', type : 'int' }, { name : 'salefetchmethod', mapping : 'salefetchmethod', type : 'string' }, { name : 'salefetchmoney', mapping : 'salefetchmoney', type : 'int' }, { name : 'fundfetchmethod', mapping : 'fundfetchmethod', type : 'string' }, { name : 'fundfetchmoney', mapping : 'fundfetchmoney', type : 'int' } ]) }); store.load( { params : { start : 0, limit : 15 } }); var cm = new Ext.grid.ColumnModel( [ { header : '卡类型名称', dataIndex : 'categoryname', sortable : true, width : 100 }, { header : '卡的基本费用', dataIndex : 'cardcost', sortable : true, width : 100 }, { header : '售卡提成方式', dataIndex : 'salefetchmethod', sortable : true, width : 100 }, { header : '售卡提成金额', dataIndex : 'salefetchmoney', sortable : true, width : 100 }, { header : '充值提成方式', dataIndex : 'fundfetchmethod', sortable : true, width : 100 }, { header : '充值提成金额', dataIndex : 'fundfetchmoney', sortable : true, width : 100 } ]); cm.defaultSortable = true; var grid = new Ext.grid.GridPanel( { border : false, store : store, loadMask : true, cm : cm, region:'center', autoExpandColumn:true, stripeRows:true, tbar : new Ext.PagingToolbar( { store : store, pageSize : 15, displayInfo : true, displayMsg : "本页显示第{0}条到第{1}条的记录,一共{2}条", emptyMsg : "没有记录" }) }); Ext.onReady(function() { Ext.QuickTips.init(); grid.render(new Ext.getDom("sadf")); });
?
?jquery+struts2-convention..
?
?
?