- 浏览: 762160 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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 4845今天,折腾了一个上午,加下午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 30751、局部刷新 /** * 刷新页面* */ ... -
zk框架中常见问题的解决
2009-06-01 22:10 119101、打开浏览器窗口常用于超链接 /** * 重新打开 ... -
zk中zul页面中组件的id和java类中的变量绑定实现
2009-06-01 21:58 7097zul 页面 index.zul <?xml ver ... -
zk组件开发指南(3)
2009-06-01 21:01 50703.展现层 在客户端,展 ... -
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
基于java的驾校收支管理可视化平台的开题报告
时间序列 原木 间隔5秒钟 20241120
毕业设计&课设_基于 Vue 的电影在线预订与管理系统:后台 Java(SSM)代码,为毕业设计项目.zip
基于springboot课件通中小学教学课件共享平台源码数据库文档.zip
基于java的网上购物商城的开题报告
Delphi人脸检测与识别Demo1fdef-main.zip
基于java的咖啡在线销售系统的开题报告
基于java的自助医疗服务系统的开题报告.docx
内容概要:本文档全面介绍了Visual Basic(VB)编程语言的基础知识和高级应用。首先概述了VB的基本特性和开发环境,随后详细讲述了VB的数据类型、变量、运算符、控制结构、数组、过程与函数、变量作用域等内容。接着介绍了窗体设计、控件使用、菜单与工具栏的设计,文件操作、数据库访问等关键知识点。最后讨论了VB的学习方法、发展历史及其在桌面应用、Web应用、数据库应用、游戏开发和自动化脚本编写等领域的广泛应用前景。 适合人群:初学者和中级程序员,尤其是希望快速掌握Windows桌面应用开发的人群。 使用场景及目标:①掌握VB的基础语法和开发环境;②学会使用VB创建复杂的用户界面和功能完整的应用程序;③理解数据库操作、文件管理和网络编程等高级主题。 其他说明:Visual Basic是一种简单易学且功能强大的编程语言,尤其适合用于开发Windows桌面应用。文中不仅覆盖了基础知识,还包括了大量的实用案例和技术细节,帮助读者快速提升编程技能。
基于java的疫情期间高校防控系统开题报告.docx
基于springboot+vue社区老年人帮扶系统源码数据库文档.zip
基于java的超市商品管理系统的开题报告.docx
基于SpringBoot房屋买卖平台源码数据库文档.zip
xdu限通院23微处理器系统与应用大作业(两只老虎),适应于汇编语言keil软件,
<项目介绍> - 新闻类网站系统,基于SSM(Spring、Spring MVC、MyBatis)+MySQL开发,高分成品毕业设计,附带往届论文 - 不懂运行,下载完可以私聊问,可远程教学 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
基于java的学生网上请假系统的开题报告.docx
社会经济繁荣发展的今天,电子商务得到了飞速发展,网上交易越来越彰显出其独特的优越性,在人们的日常生活中,出现了各种类型的交易网站。其中一个就是车辆易主交易网站,它是一个服务于用户买卖二手车辆的交易网站,为用户提供了平等互利、方便快捷的网上交易平台,通过这一类型的网站,用户可自由出售和购买车辆。 本课题主要根据车辆本身的特性,充分发挥互联网的特点与优势,构建一个以二手车辆为商品、基于互联网平台的车辆易主业务交易管理系统,并根据车辆易主业务交易管理系统的应用需求,进行需求分析,进而对网站系统作规划设计。采用IDEA为运行平台,以SSH为框架,运用HTML语言、JSP技术、MySql数据库、JSP与后台数据库链接等关键技术建设二手车网上交易系统,构建车辆易主交易系统的会员注册与登录,网站首页展示、用户发布商品车辆,用户求购商品车辆,分页浏览、购物系统、用户后台管理、管理员用户后台管理等功能,并使这些功能得以实现并更好为用户服务。网站整体构建完成且测试成功后,用户可以进入网站进行注册、登录,登录后,用户可以在网站上发布自己的闲置车辆或者寻找想要购买的车辆,还可以收藏车辆,管理发布和收藏的车辆,
SQLite3的向量扩展库,windows dll,版本0.1.5