记得毕业前的那会,学习jQuery Ajax写过一个三级联动的简单js。现在工作中又是遇到这样的需求。本来想去plugins.jquery.com找找看,但是还是没有找到无限贴近需求的插件。以前写的那个可是说不是插件,只是通用的JS而已,为了不重复造轮子,写下现在开发的过程,顺便学习下插件的开发。
DB2建表语句:(很简单的一对多关系)
CREATE TABLE DB2INST1.HK_DISTRICT1( DISTR1_ID INTEGER NOT NULL NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NO CACHE, NO MINVALUE, NO MAXVALUE, NO CYCLE, NO ORDER), DISTR1_NAME VARCHAR(50), DISTR1_ENAME VARCHAR(50) ) IN USERSPACE1; ALTER TABLE DB2INST1.HK_DISTRICT1 DATA CAPTURE NONE PCTFREE 0 LOCKSIZE ROW APPEND OFF NOT VOLATILE; ALTER TABLE DB2INST1.HK_DISTRICT1 ADD PRIMARY KEY (DISTR1_ID); --TABLE HK_DISTRICT2 CREATE TABLE DB2INST1.HK_DISTRICT2( DISTR2_ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NO CACHE, NO MINVALUE, NO MAXVALUE, NO CYCLE, NO ORDER), DISTR2_NAME VARCHAR(50), DISTR2_ENAME VARCHAR(50), PARENT INTEGER NOT NULL ) IN USERSPACE1; ALTER TABLE DB2INST1.HK_DISTRICT2 DATA CAPTURE NONE PCTFREE 0 LOCKSIZE ROW APPEND OFF NOT VOLATILE; ALTER TABLE DB2INST1.HK_DISTRICT2 ADD PRIMARY KEY (DISTR2_ID); ALTER TABLE DB2INST1.HK_DISTRICT2 ADD FOREIGN KEY (PARENT) REFERENCES DB2INST1.HK_DISTRICT1 (DISTR1_ID) ON DELETE NO ACTION ON UPDATE NO ACTION ENFORCED ENABLE QUERY OPTIMIZATION; --TABLE HK_DISTRICT3 CREATE TABLE DB2INST1.HK_DISTRICT3( DISTR3_ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NO CACHE, NO MINVALUE, NO MAXVALUE, NO CYCLE, NO ORDER), DISTR3_NAME VARCHAR(50), DISTR3_ENAME VARCHAR(50), PARENT INTEGER NOT NULL ) IN USERSPACE1; ALTER TABLE DB2INST1.HK_DISTRICT3 DATA CAPTURE NONE PCTFREE 0 LOCKSIZE ROW APPEND OFF NOT VOLATILE; ALTER TABLE DB2INST1.HK_DISTRICT3 ADD PRIMARY KEY (DISTR3_ID); ALTER TABLE DB2INST1.HK_DISTRICT3 ADD FOREIGN KEY (PARENT) REFERENCES DB2INST1.HK_DISTRICT2 (DISTR2_ID) ON DELETE NO ACTION ON UPDATE NO ACTION ENFORCED ENABLE QUERY OPTIMIZATION;
ibatis (sql.xml)通过SELECT配置一对多关系
<sqlMap namespace="HK_District"> <typeAlias alias="Distric1Vo" type="com.amway.site.vo.Distric1Vo"/> <typeAlias alias="Distric2Vo" type="com.amway.site.vo.Distric2Vo"/> <typeAlias alias="Distric3Vo" type="com.amway.site.vo.Distric3Vo"/> <cacheModel type="LRU" id="district-cache"> <flushInterval minutes="10"/> <property name="size" value="1000"/> </cacheModel> <resultMap id="district_1_map" class="Distric1Vo"> <result property="distr1Id" column="DISTR1_ID"/> <result property="distrName" column="DISTR1_NAME"/> <result property="distrEname" column="DISTR1_ENAME"/> <result property="district2s" column="DISTR1_ID" select="find_distr2s_by_parentId"/> </resultMap> <resultMap id="district_2_map" class="Distric2Vo"> <result property="distr2Id" column="DISTR2_ID"/> <result property="distrName" column="DISTR2_NAME"/> <result property="distrEname" column="DISTR2_ENAME"/> <result property="district3s" column="DISTR2_ID" select="find_distr3s_by_parentId"/> </resultMap> <resultMap id="district_3_map" class="Distric3Vo"> <result property="distr3Id" column="DISTR3_ID"/> <result property="distrName" column="DISTR3_NAME"/> <result property="distrEname" column="DISTR3_ENAME"/> </resultMap> <select id="find_all_district" resultMap="district_1_map" cacheModel="district-cache"> SELECT DISTR1_ID, DISTR1_NAME, DISTR1_ENAME FROM DB2INST1.HK_DISTRICT1 WITH UR </select> <select id="find_distr2s_by_parentId" resultMap="district_2_map" cacheModel="district-cache"> SELECT DISTR2_ID, DISTR2_NAME, DISTR2_ENAME FROM DB2INST1.HK_DISTRICT2 WHERE PARENT = #value# WITH UR </select> <select id="find_distr3s_by_parentId" resultMap="district_3_map" cacheModel="district-cache"> SELECT DISTR3_ID, DISTR3_NAME, DISTR3_ENAME FROM DB2INST1.HK_DISTRICT3 WHERE PARENT = #value# WITH UR </select> </sqlMap>
POJO:很简单的对应表的字段,同时第一个VO包含第二个VO的list,第二个VO包含第三个VO的List。如下:
//Distric1Vo private Integer distr1Id; private String distrName; private String distrEname; private List<Distric2Vo> district2s; //Distric2Vo private Integer distr2Id; private String distrName; private String distrEname; private List<Distric2Vo> district3s; //Distric3Vo private Integer distr3Id; private String distrName; private String distrEname;
以上就可以使用Ibatis捞出所有的数据:List<Distric1Vo> list 包含了三个表的数据,这样做的好处就不需要每次联动的时候
都去后台捞。当然你也使用java 静态机制 不要重复的查询数据
strus1 action:
req.setCharacterEncoding("UTF-8");//设置编码格式,否则会乱码 response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter();//strus1使用IO操作,写入到页面 List <Distric1Vo> list = DistrictManager.getInstance().getAllDistrict(); Gson gson = new Gson(); System.out.println(gson.toJson(list)); out.print(gson.toJson(list)); //需要用到gson.jar或者json-lib-2.4-jdk15以便很好的把list转换成json return null;
插件代码,见附件。
使用方法:
$(function(){ $("#test").hkDistrictSelector(); });
支持参数options:
{
language: 'zh'//语言zh,en,分别查询数据库的英文字段。
,styleSheet:{
"width":"100px"
,"margin-left":"10px"
}//select的样式css支持jquery的css api参数格式
,isCache:false//是否缓存,暂时未去实现
,ajaxJsonUrl: "listDistrict.do"//jquery Ajax请求的strus1的action地址
,ajaxData : "method=unspecified"//Ajax请求的strus1的method参数
}
参数用法:
$(function(){ $("#test").hkDistrictSelector({ language: 'en' ,styleSheet:{ "width":"100px" ,"margin-left":"10px" } }); });
效果:
这样的话,一个可拓展的插件就开发好了。
下次遇到这样的工作,我就可以节省很多的时间了,呵呵~
相关推荐
SSH,即Spring、Struts2和Hibernate,是Java开发中常用的三大开源框架组合,也被称为SSI(Spring、Struts2、Hibernate)。这个框架集成旨在提供一个高效、灵活且功能丰富的后端开发解决方案,用于构建企业级Web应用...
在 Flex 与服务器端的交互中,主要有三种常见的数据访问方式: 1. **HTTPService**:这是最基础的数据访问方式,通过 HTTP 协议发送请求到服务器,获取 XML、JSON 等格式的数据。这种方式简单易用,但不支持双向...
可以使用第三方库如Gson或Jackson,或者Struts2内置的JSON插件来完成: ```java // 使用Gson Gson gson = new Gson(); String jsonData = gson.toJson(dataList); ``` 3. **设置结果类型**:配置Struts2返回...
1. 数据库文件:如`.sql`文件,用于创建和初始化数据库表结构。 2. JSP文件:包含了用户交互界面的HTML代码和嵌入的Java脚本。 3. Java源代码:包括Action类、ActionForm类、业务逻辑处理类(如BookService、...
在IT领域,构建用户界面时,树形结构是一种常见的数据展示方式,尤其在管理大量层级关系数据时。...在实际开发中,可以根据项目需求进行调整和优化,例如引入第三方库如jQuery UI或AngularJS的ngTree等来简化开发过程。
NULL 博文链接:https://hanqifeng.iteye.com/blog/840945
CRM客户关系管理系统是一种用于管理企业与现有和潜在客户之间交互的软件工具。它帮助企业收集、组织、分析和利用关于客户的信息,以优化销售、市场营销和服务流程。... SQL Server 2005是微软公司推出的数据库管理系统...
Struts2、Spring 4 和 Hibernate 是 Java Web 开发中常用的三大框架,它们各自负责不同的职责,协同工作可以构建出高效、可维护的后端应用。这个压缩包提供了这三个框架所需的全部jar包,确保了搭建项目的稳定性和...
在本项目中,“微博系统Hibernate+struts2实现”是一个基于JavaEE技术栈构建的企业级应用实例,旨在演示如何利用Struts2框架和Hibernate ORM工具来构建一个完整的微博平台。这个系统采用SQL Server 2008作为后端...
strus2 jquery 验证strus2 jquery 验证strus2 jquery 验证strus2 jquery 验证strus2 jquery 验证strus2 jquery 验证strus2 jquery 验证
这个“Strus+Spring+Hibernate PPT 视频教程例题教材集合”提供了一套完整的教学资源,帮助开发者深入理解和掌握这三大框架的整合使用。 Struts是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,它...
SSH框架,全称为Spring、Struts和Hibernate,是Java Web开发中常见的三层架构组合,用于构建高效、可维护的企业级应用程序。Spring提供了依赖注入和面向切面编程,Struts作为MVC框架处理视图和控制逻辑,而Hibernate...
Spring、Struts2和iBatis是Java Web开发中的三个重要框架,它们分别负责不同的职责。Spring是一个全面的后端应用程序框架,提供了依赖注入(DI)和面向切面编程(AOP)等功能;Struts2则是一个MVC(模型-视图-控制器...
在本实例中,“struts2+oracle三级联动菜单”是使用Struts2框架实现的一个功能,它涉及数据库(Oracle)的交互以及前端用户界面的动态更新。联动菜单,又称为级联下拉框,是指在一个下拉菜单的选择会影响到另一个或...
"jQuery+json异步实现JSP和struts2之间的数据传递"是一个典型的应用场景,它结合了前端JavaScript库jQuery与后端MVC框架Struts2,通过JSON这种轻量级的数据交换格式进行高效的数据交互。下面我们将详细探讨这一主题...
Struts和iBatis是两个在Java Web开发中广泛应用的框架。Struts作为一个MVC(Model-View-Controller)框架,主要用于控制应用程序的流程,而iBatis则是一个持久层框架,它简化了数据库操作,将SQL语句与Java代码解...
最近在群里好多朋友,不管认识还是不认识的,都问到SSH2框架整合搭建的问题。于是乎,抽了个空,理了个文档出来,里面是整合搭建的详细步骤以及截图,并附上了使用到的相应jar包。新手的最佳选择。
Struts2、Spring和MyBatis是Java Web开发中经典的三大框架,它们分别负责MVC模式中的控制层、业务层和服务层。EasyUI则是一个基于jQuery的UI组件库,用于快速构建美观且响应式的Web应用界面。下面我们将深入探讨这三...
Struts、Hibernate和Spring是Java企业级开发中的三大框架,它们的组合,即"SSh",被广泛用于构建高效、可维护的Web应用程序。这三个框架各有其独特的功能,但协同工作时能提供强大的功能集。 Struts是MVC(模型-...
它提供了丰富的功能,包括动作调度、结果映射、拦截器、插件支持等,使得开发者能更高效地管理业务逻辑、控制流程和视图展示。在绩效考评系统中,Struts2可以负责接收和处理JSP页面传递的请求,执行相应的业务逻辑,...