- 浏览: 762232 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (241)
- 个人思考 (1)
- 数据库 (5)
- java基础 (32)
- 软件工程 (2)
- zk开源框架 (15)
- 设计模式 (25)
- javascript (12)
- css (9)
- UML (2)
- CMMI软件需求 (3)
- CMMI软件设计 (2)
- CMMI软件实现 (1)
- CMMI软件测试 (1)
- 正则表达式 (4)
- 系统日志配置 (4)
- 应用服务器 (1)
- spring (7)
- XML (6)
- java web (10)
- Ajax (3)
- RichFaces (14)
- 问题 (1)
- 评论文章 (2)
- fushioncharts (2)
- MAVN (4)
- jquery (26)
- Ext js学习 (2)
- 学习心得 (2)
- CSS兼容问题 (3)
- XSL-FOP (1)
- Quartz (0)
- OSGI (1)
- spring--security (6)
- apache tools (1)
- eclispe 小技巧 (2)
- Ant (1)
- 杂记 (1)
- spring3系列 (5)
- java cache (4)
- EffectiveJava (2)
- 代码重构 (0)
最新评论
-
psz6696:
可以说是超级简单的Demo了,可惜没有演示设值注入和构造注入两 ...
模拟spring中的ClassPathXmlApplicationContext类的实现 -
ziyourJava:
[flash=200,200][img][url][list] ...
spring security进级篇 V 自定义标签控制显示 -
ztw1122:
...
zk组件开发指南(目录) -
zjysuv:
容我说一句 在座的各位都是垃圾 spring 3.2以后的@C ...
三. spring mvc 异常统一处理 -
chengwu1201:
二 基于Spring的异常体系处理
在图片附件中有效果图,可以先看一下.
先说下来由:因为不太喜欢zk的tree,也因为数据量实在太大,每次都用tree全部现实出来很耗费性能
所以就想到了google的搜索框,打算自己做一个.
整体思路是这样的:
做一个bandbox,里边包含一个textbox和一个listbox
textbox用于接收搜索的条件
listbox用于显示搜索的内容,选定后反填到bandbox中
step.1---页面(test.zul)
- <window id="testWnd" title="test" border="normal"
- use="com.test.TestWindow" height="95%">
- <grid width="60%">
- <columns>
- <column label=""/>
- <column label=""/>
- </columns>
- <rows>
- <row height="40px" spans="1,2">
- 名称:
- <hbox>
- <!--
- autodrop属性实现bandbox的自动弹出
- constraint属性是对bandbox的验证,其中"no empty"是非空验证
- 如果你想定义验证后显示的内容只需要"no empty: 你想显示的信息"就可以了
- -->
- <bandbox id="gxsmc" readonly="true" autodrop="true"
- constraint="no empty" width="300px">
- <bandpopup>
- <hbox>
- <label value="输入代码或名称查找:"></label>
- <!-- 用于输入搜索条件的textbox
- 为其添加onChang和onOK事件
- 目前这个版本需要输入完成后将textbox失去焦点或按回车键才能显示搜索内容
- 我想做个类似google那种效果的,一直没搞成,所有的事件都试过了
- 希望高手们帮忙看看
- -->
- <textbox id="term" onChange="testWnd.initTest(self.value)"
- onOK="testWnd.initTest(self.value)"/>
- </hbox>
- <vbox>
- <!-- 用于显示搜索内容的listbox -->
- <listbox id="gxsList" width="320px" height="175px">
- <listhead>
- <listheader label="名称" width="300px" sort="auto" />
- </listhead>
- </listbox>
- <!-- 用于分页的控件 -->
- <paging id="gxsPag" pageSize="10"></paging>
- </vbox>
- </bandpopup>
- </bandbox>
- <image src="img/Centigrade-Widget-Icons/QuestionmarkButton-16x16.png" tooltip="title"
- style="cursor:pointer" popup="title"/>操作说明
- </hbox>
- </row>
- </rows>
- </grid>
- <popup id="title" width="300px">
- <html>
- 单击左边输入框,输入管辖所代码或管辖所名称<br />
- 要求代码长度大于4位,名称长度大于2位<br />
- 输入完成后,按"回车(Enter)键"或"Tab"键选择
- </html>
- </popup>
- </window>
<window id="testWnd" title="test" border="normal" use="com.test.TestWindow" height="95%"> <grid width="60%"> <columns> <column label=""/> <column label=""/> </columns> <rows> <row height="40px" spans="1,2"> 名称: <hbox> <!-- autodrop属性实现bandbox的自动弹出 constraint属性是对bandbox的验证,其中"no empty"是非空验证 如果你想定义验证后显示的内容只需要"no empty: 你想显示的信息"就可以了 --> <bandbox id="gxsmc" readonly="true" autodrop="true" constraint="no empty" width="300px"> <bandpopup> <hbox> <label value="输入代码或名称查找:"></label> <!-- 用于输入搜索条件的textbox 为其添加onChang和onOK事件 目前这个版本需要输入完成后将textbox失去焦点或按回车键才能显示搜索内容 我想做个类似google那种效果的,一直没搞成,所有的事件都试过了 希望高手们帮忙看看 --> <textbox id="term" onChange="testWnd.initTest(self.value)" onOK="testWnd.initTest(self.value)"/> </hbox> <vbox> <!-- 用于显示搜索内容的listbox --> <listbox id="gxsList" width="320px" height="175px"> <listhead> <listheader label="名称" width="300px" sort="auto" /> </listhead> </listbox> <!-- 用于分页的控件 --> <paging id="gxsPag" pageSize="10"></paging> </vbox> </bandpopup> </bandbox> <image src="img/Centigrade-Widget-Icons/QuestionmarkButton-16x16.png" tooltip="title" style="cursor:pointer" popup="title"/>操作说明 </hbox> </row> </rows> </grid> <popup id="title" width="300px"> <html> 单击左边输入框,输入管辖所代码或管辖所名称<br /> 要求代码长度大于4位,名称长度大于2位<br /> 输入完成后,按"回车(Enter)键"或"Tab"键选择 </html> </popup> </window>
step.2----建立页面use的后台类
- public class TestWindow extends Window {
- private static final long serialVersionUID = 1L;
- public void initTest(final String value) {
- //这么做有点笨了,主要是怕sql语句报错,dao中也用了PreparedStatementSetter,主要是以防万一
- if (value.contains("'") || value.contains("_")) {
- try {
- Messagebox.show("包含非法字符","提示",Messagebox.OK,Messagebox.INFORMATION);
- return ;
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- //限制输入的条件的长度大于4的时候才去数据查找数据
- if (value.getBytes().length >= 4) {
- //spring
- ApplicationContext ctx =
- WebApplicationContextUtils.getRequiredWebApplicationContext(
- (ServletContext)getDesktop().getWebApp().getNativeContext());
- DtgkService dtgkService = (DtgkService)ctx.getBean("dtgkService");
- //获得总条数
- int maxNum = dtgkService.getGxsInfoCountByInput(value);
- Paging pag = (Paging)getFellow("gxsPag");
- pag.setTotalSize(maxNum);
- final int PAGE_SIZE = pag.getPageSize();
- //显示数据
- reDramGxsInfo(value, 0, PAGE_SIZE);
- //注册onpaging事件
- pag.addEventListener("onPaging", new EventListener() {
- public void onEvent(Event event) {
- PagingEvent pe = (PagingEvent) event;
- int pgno = pe.getActivePage();//页数(从零计算)
- int start=pgno * PAGE_SIZE;
- int end = start+PAGE_SIZE;
- // System.out.println("pgno"+pgno+"\tstart+"+start+"\tend"+end);
- reDramGxsInfo(value, start, end);
- }
- });
- }
- }
- public void reDramGxsInfo(String value, int firstNum, int maxNum) {
- final Listbox gxsBox = (Listbox) this.getFellow("gxsList");
- gxsBox.getItems().clear();
- final Bandbox combo = (Bandbox) this.getFellow("gxsmc");
- ApplicationContext ctx =
- WebApplicationContextUtils.getRequiredWebApplicationContext(
- (ServletContext)getDesktop().getWebApp().getNativeContext());
- DtgkService dtgkService = (DtgkService)ctx.getBean("dtgkService");
- //根据条件搜索内容
- List<Map<String, String>> gxsList = dtgkService.getGxsInfoByInput(value,firstNum,maxNum);
- //填充到listbox中
- for (Map<String, String> map : gxsList) {
- Listitem item = new Listitem();
- Listcell lc = new Listcell();
- lc.setLabel(map.get("NAME"));
- lc.setValue(map.get("CODE"));
- lc.setParent(item);
- gxsBox.appendChild(item);
- }
- //为listbox添加select事件,当选中数据后返填到bandbox中
- gxsBox.addEventListener(Events.ON_SELECT, new EventListener() {
- public void onEvent(Event e) throws Exception {
- Listitem item = gxsBox.getSelectedItem();
- List<Listcell> cellList = item.getChildren();
- for (Listcell lc : cellList) {
- combo.setValue(lc.getLabel()+","+lc.getValue());
- }
- combo.closeDropdown();
- }});
- }
- }
public class TestWindow extends Window { private static final long serialVersionUID = 1L; public void initTest(final String value) { //这么做有点笨了,主要是怕sql语句报错,dao中也用了PreparedStatementSetter,主要是以防万一 if (value.contains("'") || value.contains("_")) { try { Messagebox.show("包含非法字符","提示",Messagebox.OK,Messagebox.INFORMATION); return ; } catch (InterruptedException e) { e.printStackTrace(); } } //限制输入的条件的长度大于4的时候才去数据查找数据 if (value.getBytes().length >= 4) { //spring ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext( (ServletContext)getDesktop().getWebApp().getNativeContext()); DtgkService dtgkService = (DtgkService)ctx.getBean("dtgkService"); //获得总条数 int maxNum = dtgkService.getGxsInfoCountByInput(value); Paging pag = (Paging)getFellow("gxsPag"); pag.setTotalSize(maxNum); final int PAGE_SIZE = pag.getPageSize(); //显示数据 reDramGxsInfo(value, 0, PAGE_SIZE); //注册onpaging事件 pag.addEventListener("onPaging", new EventListener() { public void onEvent(Event event) { PagingEvent pe = (PagingEvent) event; int pgno = pe.getActivePage();//页数(从零计算) int start=pgno * PAGE_SIZE; int end = start+PAGE_SIZE; // System.out.println("pgno"+pgno+"\tstart+"+start+"\tend"+end); reDramGxsInfo(value, start, end); } }); } } public void reDramGxsInfo(String value, int firstNum, int maxNum) { final Listbox gxsBox = (Listbox) this.getFellow("gxsList"); gxsBox.getItems().clear(); final Bandbox combo = (Bandbox) this.getFellow("gxsmc"); ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext( (ServletContext)getDesktop().getWebApp().getNativeContext()); DtgkService dtgkService = (DtgkService)ctx.getBean("dtgkService"); //根据条件搜索内容 List<Map<String, String>> gxsList = dtgkService.getGxsInfoByInput(value,firstNum,maxNum); //填充到listbox中 for (Map<String, String> map : gxsList) { Listitem item = new Listitem(); Listcell lc = new Listcell(); lc.setLabel(map.get("NAME")); lc.setValue(map.get("CODE")); lc.setParent(item); gxsBox.appendChild(item); } //为listbox添加select事件,当选中数据后返填到bandbox中 gxsBox.addEventListener(Events.ON_SELECT, new EventListener() { public void onEvent(Event e) throws Exception { Listitem item = gxsBox.getSelectedItem(); List<Listcell> cellList = item.getChildren(); for (Listcell lc : cellList) { combo.setValue(lc.getLabel()+","+lc.getValue()); } combo.closeDropdown(); }}); } }
step.3---service的方法就两句话,一块贴出来了
- /**
- * 获取信息,根据输入框的录入
- * @param value
- * @param firstNum
- * @param maxNum
- * @return
- */
- public List<Map<String, String>> getGxsInfoByInput(String value, int firstNum, int maxNum) {
- return this.userDao.queryGxsByInput(value, firstNum, maxNum);
- }
- /**
- * 获取count
- * @param value
- * @return
- */
- public int getGxsInfoCountByInput(String value) {
- return this.userDao.queryGxsCountByInput(value);
- }
/** * 获取信息,根据输入框的录入 * @param value * @param firstNum * @param maxNum * @return */ public List<Map<String, String>> getGxsInfoByInput(String value, int firstNum, int maxNum) { return this.userDao.queryGxsByInput(value, firstNum, maxNum); } /** * 获取count * @param value * @return */ public int getGxsInfoCountByInput(String value) { return this.userDao.queryGxsCountByInput(value); }
step.4-----dao
- public int queryGxsCountByInput(final String value) {
- String sql = "SELECT DISTINCT COUNT(*) FROM " +
- "TABLENAME WHERE CODE LIKE '%"+value+"%' OR NAME LIKE '%"+value+"%'";
- return this.getJdbcTemplate().queryForInt(sql);
- }
- public List<Map<String, String>> queryGxsByInput(final String value, int firstNum, int maxNum) {
- String sql = "SELECT * FROM (SELECT DISTINCT ROWNUM AS RN, T.CODE,T.NAME FROM " +
- "TABLENAME T WHERE T.CODE LIKE ? OR T.NAME LIKE ?) WHERE RN>"+firstNum+" AND RN<="+maxNum;
- return this.getJdbcTemplate().query(sql, new PreparedStatementSetter(){
- public void setValues(PreparedStatement pst) throws SQLException {
- pst.setString(1, "%"+value+"%");
- pst.setString(2, "%"+value+"%");
- }}, new GxsMapper());
- }
- protected class GxsMapper implements RowMapper {
- public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
- Map<String, String> gxsMap = new HashMap<String, String>();
- gxsMap.put("CODE", rs.getString("CODE"));
- gxsMap.put("NAME", rs.getString("NAME"));
- return gxsMap;
- }
- }
public int queryGxsCountByInput(final String value) { String sql = "SELECT DISTINCT COUNT(*) FROM " + "TABLENAME WHERE CODE LIKE '%"+value+"%' OR NAME LIKE '%"+value+"%'"; return this.getJdbcTemplate().queryForInt(sql); } public List<Map<String, String>> queryGxsByInput(final String value, int firstNum, int maxNum) { String sql = "SELECT * FROM (SELECT DISTINCT ROWNUM AS RN, T.CODE,T.NAME FROM " + "TABLENAME T WHERE T.CODE LIKE ? OR T.NAME LIKE ?) WHERE RN>"+firstNum+" AND RN<="+maxNum; return this.getJdbcTemplate().query(sql, new PreparedStatementSetter(){ public void setValues(PreparedStatement pst) throws SQLException { pst.setString(1, "%"+value+"%"); pst.setString(2, "%"+value+"%"); }}, new GxsMapper()); } protected class GxsMapper implements RowMapper { public Object mapRow(ResultSet rs, int rowNum) throws SQLException { Map<String, String> gxsMap = new HashMap<String, String>(); gxsMap.put("CODE", rs.getString("CODE")); gxsMap.put("NAME", rs.getString("NAME")); return gxsMap; } }
发表评论
-
采用java.util.concurrent.Semaphore 类实现对资源限制访问量
2010-10-27 14:59 1953package com.citicbank.vipfund.w ... -
zk中message的封装
2009-06-14 16:23 1967最近,用zk的message老感觉填写东西很麻烦,就对它做了此 ... -
zk如何调用本地javascript代码向服务器端发送数据
2009-06-11 20:55 4846今天,折腾了一个上午,加下午1个小时,终于实现了zk页面中,如 ... -
试着用zk结合hibernaet实现分页查询
2009-06-10 14:14 2650原文:http://www.iteye.com/topic/2 ... -
根据sql查询实现zk Listbox翻页显示数据
2009-06-10 14:07 2403最近一直在研究如何封装zk的Listbox,实现简单的 ... -
zk中定义布局模版实现
2009-06-02 23:03 3095在项目的开发过程中,有些布局是固定的,为了布局的统一,通常会制 ... -
zk中动态产生多个组件的实现
2009-06-02 22:34 3478zk动态产生多个页面的例子代码: /** * * ... -
zk框架中常见问题的解决续
2009-06-02 21:02 30761、局部刷新 /** * 刷新页面* */ ... -
zk框架中常见问题的解决
2009-06-01 22:10 119111、打开浏览器窗口常用于超链接 /** * 重新打开 ... -
zk中zul页面中组件的id和java类中的变量绑定实现
2009-06-01 21:58 7101zul 页面 index.zul <?xml ver ... -
zk组件开发指南(3)
2009-06-01 21:01 50713.展现层 在客户端,展 ... -
zk组件开发指南(2)
2009-06-01 20:52 43112. 句柄Handle 句柄是运行在服务器端可以被应 ... -
zk组件开发指南(1)
2009-06-01 20:09 37881.简介 ... -
zk组件开发指南(目录)
2009-06-01 19:40 2803声明:本人翻译水平有限,有误之处请多指教。 ...
相关推荐
- **Radio**: 单选按钮,多个选项中选择一个。 - **Checkbox**: 复选框,多个选项中可以多选。 - **Combobox**: 下拉组合框,结合了下拉列表和输入框的功能。 - **Bandbox**: 结合了按钮和下拉列表的功能。 - **Grid...
基于springboot教育资源共享平台源码数据库文档.zip
linux开发篇,配套视频:https://www.bilibili.com/list/474327672?sid=4493702&spm_id_from=333.999.0.0&desc=1
ReadEra 这个阅读应用能够打开下列任何格式的文档: EPUB, PDF, DOC, RTF, TXT, DJVU, FB2, MOBI, 和 CHM. 基本上来说,你可以用它阅读你的设备内存中的任何书籍或者文本文档。 这个应用与划分成章节的文档兼。,有一个书签功能,可以在你阅读的时候,自动保存你的进度。另外,它让你更改页面模式,从几种不同的主题中进行挑选(夜间,白天,棕黑色调,还有控制台)。
软件环境:KEIL4 硬件环境:STM32单片机+舵机 控制原理:通过控制输出信号的占空比调节舵机旋转的角度
基于springboot仓库管理系统源码数据库文档.zip
酒店管理系统源码C++实现的毕业设计项目源码.zip,个人大四的毕业设计、经导师指导并认可通过的高分设计项目,评审分98.5分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 酒店管理系统源码C++实现的毕业设计项目源码.zip,酒店管理系统源码C++实现的毕业设计项目源码.zip个人大四的毕业设计、经导师指导并认可通过的高分设计项目,评审分98.5分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。酒店管理系统源码C++实现的毕业设计项目源码.zip酒店管理系统源码C++实现的毕业设计项目源码.zip酒店管理系统源码C++实现的毕业设计项目源码.zip,个人大四的毕业设计、经导师指导并认可通过的高分设计项目,评审分98.5分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。酒店管理系统源码C++实现的毕业设计项目源码.zip,个人大四的毕业设计、经导师指导并认可通过的高分设计项目,评审分98.5分。主要针对计算机相关专业的正在做毕
58商铺全新UI试客试用平台网站源码
springboot vue3前后端分离 基于SpringBoot+Vue的轻量级定时任务管理系统.zip
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
4D毫米波雷达点云数据处理方法研究.caj
S M 2 2 5 8 X T 量产工具供大家下载使用
基于springboot的文物管理系统源码数据库文档.zip
基于springboot的电影院售票管理系统源码数据库文档.zip
基于Java web 实现的仓库管理系统源码,适用于初学者了解Java web的开发过程以及仓库管理系统的实现。
美容美发项目,使用django框架,前后端一体化项目
在线票务:2023年中国在线票务行业市场规模约为24.99亿元,挖掘市场蓝海新机遇 在数字浪潮的席卷下,传统的票务销售模式正经历着前所未有的变革。纸质门票逐渐淡出人们的视野,取而代之的是便捷、高效的数字和移动票务。这一转变不仅为消费者带来了前所未有的购票体验,更为在线票务平台开辟了广阔的发展空间和市场机遇。随着国民经济的持续增长和文体娱乐行业的蓬勃发展,中国在线票务行业正站在时代的风口浪尖,等待着每一位有志之士的加入。那么,这片蓝海市场究竟蕴藏着怎样的潜力?又该如何把握机遇,实现突破?让我们一同探索。 市场概况: 近年来,中国在线票务行业市场规模持续扩大,展现出强劲的增长势头。据QYResearch数据显示,2023年中国在线票务行业市场规模约为24.99亿元,尽管受到宏观经济的影响,市场规模增速放缓,但整体趋势依然向好。这一增长主要得益于国民人均收入的不断提高、电影及演出行业的快速发展以及政府政策的支持。例如,2023年财政部、国家电影局发布的《关于阶段性免征国家电影事业发展专项资金政策的公告》,为电影行业注入了强劲动力,进而推动了在线票务市场规模的扩大。 技术创新与趋势: 技术进步
基于SpringBoot的养老院管理系统源码数据库文档.zip
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过严格测试运行成功才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
内容概要:本文档是一份详细的Go语言教程,从基础概念介绍到高级主题均有覆盖。主要内容包括Go语言的基础语法、数据类型、控制结构、函数、结构体、接口和并发编程等方面。通过具体示例介绍了如何使用Go语言进行开发。 适合人群:初学者和有一定经验的程序员都可以从这篇教程中受益,特别是那些想要快速掌握Go语言并应用于实际项目的开发者。 使用场景及目标:适用于初学者系统学习Go语言的基础知识和常用功能;也可以作为已有开发经验者的参考资料,帮助他们解决具体的编程问题,提高开发效率。 其他说明:本教程不仅包含了Go语言的基本知识点,还重点讲解了其独特的并发编程模型。读者在学习过程中应该注重理论与实践相结合,通过实际编写代码来加深理解和记忆。