- 浏览: 762418 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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的异常体系处理
在项目的开发过程中,有些布局是固定的,为了布局的统一,通常会制定一定的模版,每个页面都继承这个模版,这样所有程序的实现都很固定,而且写法都大同小异,从而大大提高了代码的复用率。
1、定义模版的各个类
/** * * @功能:模版主类,做布局之用 * @创建人 gao_jie * @创建日期 Mar 3, 2009 * @版本 1.0 * */ public abstract class WindowTemplet extends Borderlayout implements AfterCompose { /** * 上面框架 */ private Div m_mainCenterNorthDiv; /** * ZK框架对象 */ private LayoutRegion borderlayout_navigate; /** * 中心布局 */ private LayoutRegion main_center; /** * 子窗口集合 */ private List<ChildWindow> divs = new ArrayList<ChildWindow>(); /* * (非 Javadoc) * * @see org.zkoss.zk.ui.ext.AfterCompose#afterCompose() */ public void afterCompose() { this.createMainBorderLayout(); this.getBorderlayout_navigate().appendChild( this.createNavigateComponent()); this.doWindowTempletInit(); } /** * 窗体返回操作 */ abstract protected void onReturn(); /** * 初始化 */ abstract protected void doWindowTempletInit(); /** * 调用各子窗口处理过程 * * @param command */ protected void processCommand(ConsoleCommand command) { for (Object child : divs) { try { ((ChildWindow) child).processCommand(command); } catch (Exception e) { e.getMessage(); } } } /** * 创建主体框架 */ private void createMainBorderLayout() { LayoutRegion main_north = this.createLayoutRegion("north", null, "none", true, false); main_center = this.createLayoutRegion("center", null, "none", true, true); this.appendChild(main_north); this.appendChild(main_center); this.setBorderlayout_navigate(main_north); } /** * 创建一个LayoutRegion * * @param name * @param size * @param border * @param flex * @param autoscroll * @return */ private LayoutRegion createLayoutRegion(String name, String size, String border, Boolean flex, Boolean autoscroll) { LayoutRegion region = null; try { if ("north".equals(name)) region = (LayoutRegion) Class.forName( "org.zkoss.zkex.zul.North").newInstance(); if ("south".equals(name)) region = (LayoutRegion) Class.forName( "org.zkoss.zkex.zul.South").newInstance(); if ("west".equals(name)) region = (LayoutRegion) Class .forName("org.zkoss.zkex.zul.West").newInstance(); if ("east".equals(name)) region = (LayoutRegion) Class .forName("org.zkoss.zkex.zul.East").newInstance(); if ("center".equals(name)) region = (LayoutRegion) Class.forName( "org.zkoss.zkex.zul.Center").newInstance(); } catch (Exception e) { e.getMessage(); } if (null != size) region.setSize(size); if (null != border) region.setBorder(border); if (null != flex) region.setFlex(flex); if (null != autoscroll) region.setAutoscroll(autoscroll); region.setStyle("background-color:#F5F6CC"); return region; } /** * 创建容器 * * @param url * @param position */ protected Include createContainer(String url) { Include include = new Include(); include.setSrc(url); main_center.appendChild(include); return include; } /** * 创建标题部分 * * @return */ private Div createNavigateComponent() { Div div = new Div(); Hbox titleHbox = new Hbox(); titleHbox.setSpacing("0"); titleHbox.setWidth("99%"); titleHbox.setHeight("36px"); titleHbox.setStyle("position:relative;top:15px"); Separator separator = new Separator(); separator.setBar(true); div.appendChild(titleHbox); div.appendChild(separator); Hbox headHbox = new Hbox(); headHbox.setStyle("align: left"); Space blank = new Space(); blank.setStyle("color:#F5F6CC; text-align: left"); Label title = new Label(); title.setId("titlelabel"); title.setWidth("30%"); title .setStyle("color: #000000; FONT-FAMILY: Verdana, Helvetica, sans-serif; font-size:12px; text-align: left"); Div backDiv = new Div(); backDiv.setAlign("right"); backDiv.setWidth("90%"); headHbox.appendChild(blank); headHbox.appendChild(title); titleHbox.appendChild(headHbox); titleHbox.appendChild(backDiv); Label back = new Label(); back.setId("backlabel"); back.setValue("返回"); back.setVisible(false); back .setStyle("cursor:hand ;color:blue;background-color:#F5F6CC;font-size:12px;text-decoration:underline"); backDiv.appendChild(back); back.addEventListener("onClick", new EventListener() { public void onEvent(Event arg0) throws Exception { onReturn(); } }); m_mainCenterNorthDiv = new Div(); div.appendChild(m_mainCenterNorthDiv); return div; } private LayoutRegion getBorderlayout_navigate() { return borderlayout_navigate; } private void setBorderlayout_navigate(LayoutRegion borderlayout_navigate) { this.borderlayout_navigate = borderlayout_navigate; } public String getNavigateTitle() { Label label = (Label) this.getFellow("titlelabel"); return label.getValue(); } public void setNavigateTitle(String navigateTitle) { Label label = (Label) this.getFellow("titlelabel"); label.setValue(navigateTitle); } public boolean getShowReturnButton() { Label back = (Label) this.getFellow("backlabel"); return back.isVisible(); } public void setShowReturnButton(boolean showReturnButton, String lable) { Label back = (Label) this.getFellow("backlabel"); back.setVisible(showReturnButton); if (lable != null) { back.setValue(lable); } } protected List<ChildWindow> getDivs() { return divs; } /** * 获取TempletWindow * * @return */ public static WindowTemplet getTempletWindow() { WindowTemplet win = (WindowTemplet) Path .getComponent("//templetwindow/mainwnd"); return win; } }
/** * * @功能:子窗体类 * @创建人 gao_jie * @创建日期 Mar 3, 2009 * @版本 1.0 * */ public abstract class ChildWindow extends Window { private static final long serialVersionUID = 1L; /** * 构造函数 */ @SuppressWarnings("unchecked") public ChildWindow() { WindowTemplet templet = getParentWindow(); if (templet != null) templet.getDivs().add(this); } // 获取父窗口 protected WindowTemplet getParentWindow() { return WindowTemplet.getTempletWindow(); } // 处理命令过程 abstract protected void processCommand(ConsoleCommand command); // 发送命令到主窗口 protected void sendCommand(ConsoleCommand command) { WindowTemplet templet = getParentWindow(); if (templet != null) templet.processCommand(command); } }
/** * * @功能 初始化命令 * @创建人 gao_jie * @创建日期 Mar 3, 2009 * @版本 1.0 * */ public class InitCommand extends ConsoleCommand { /** * 构造函数 */ public InitCommand() { super("Init"); } }
/** * * @功能 控制命令 * @创建人 gao_jie * @创建日期 Mar 3, 2009 * @版本 1.0 * */ public class ConsoleCommand { private String name; private Object[] paras; public ConsoleCommand() { this("", new Object[] {}); } public ConsoleCommand(String name) { this(name, new Object[] {}); } public ConsoleCommand(String name, Object[] paras) { this.name = name; this.paras = paras; } // 命令名称 public String getName() { return name; } public void setName(String name) { this.name = name; } // 命令参数 public Object[] getParas() { return paras; } public void setParas(Object[] paras) { this.paras = paras; } public boolean equals(Object obj) { if (obj instanceof ConsoleCommand) { return ((ConsoleCommand) obj).getName().equalsIgnoreCase(name); } return false; } }
2、应用模版
发表评论
-
采用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 4847今天,折腾了一个上午,加下午1个小时,终于实现了zk页面中,如 ... -
使用zk的bandbox和listbox实现的一个具有搜索功能的combobox(实现后台分页)
2009-06-10 14:37 3949在图片附件中有效果图,可以先看一下. 先说下来由:因 ... -
试着用zk结合hibernaet实现分页查询
2009-06-10 14:14 2652原文:http://www.iteye.com/topic/2 ... -
根据sql查询实现zk Listbox翻页显示数据
2009-06-10 14:07 2404最近一直在研究如何封装zk的Listbox,实现简单的 ... -
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声明:本人翻译水平有限,有误之处请多指教。 ...
相关推荐
**ZK框架详解** ZK框架是一款高效且易用的Java Web开发框架,它专为构建富客户端(Rich Client)...在"zk框架demo"中,我们可以深入研究ZK的各个方面,从基础组件的使用到高级功能的实现,不断提升自己的Web开发技能。
《ZK 5 Essentials.pdf》这本书很可能详细介绍了ZK 5的基础概念、组件使用、事件处理、布局管理以及ZUL脚本的编写等方面的内容。通过阅读这本书,开发者可以全面掌握ZK 5的核心技术和最佳实践,从而在Web开发领域中...
**下载ZK包和Demo**:访问ZK官网,根据操作系统选择合适的ZK包(如Windows下选择`zk-bin-5.0.2.zip`),同时下载一个包含XML模板的Demo包。 2. **下载ZK Studio**:可以通过在线方式安装ZK Studio插件至MyEclipse...
在传统的ZK主题创建过程中,开发者通常需要编写大量的CSS代码来定义UI元素的样式,这不仅耗时,而且对CSS不熟悉的开发者来说难度较大。ZK主题生成器则简化了这一过程,让不具备专业CSS技能的用户也能参与主题设计。 ...
而宏在ZK中则扮演着代码复用和模板化的角色,有助于提高开发效率和代码质量。 1. **ZK宏定义**: ZK宏是一种预处理指令,可以在页面布局或组件渲染时执行。它们允许开发者定义可重用的代码块,通常包括一系列的...
- **ZUML(ZK User Interface Markup Language)**:这是一种专为ZK设计的标记语言,用于定义组件的布局和行为。ZUML支持条件语句、循环结构等高级特性,可以用来构建复杂的UI逻辑。 - **XML Namespaces**:ZK使用...
ZK的核心理念是将传统的桌面应用开发模式引入到Web环境中。它通过组件化的方式,允许开发者像创建桌面应用一样创建Web应用,极大地简化了Web UI的开发。ZK使用服务器驱动的模型,即所有的用户交互都在服务器端处理,...
3. **ZK中的Ajax实现**:ZK框架提供了内置的Ajax支持,如Ajax事件、Ajax组件和Ajax行为。这部分内容将详细介绍如何在ZK中创建和使用这些特性,实现无刷新的用户体验。 4. **组件和事件处理**:ZK的组件库非常丰富,...
4. **表达式语言(EL)**:ZK使用一种特殊的表达式语言,允许在XML布局文件中直接进行数据绑定和逻辑处理,增强了模板的动态性。 5. **ZUL文件**:ZK使用ZUL(ZK User Interface Language)作为其标记语言,用于...
ZUL(ZK User Interface Language)是ZK特有的界面描述语言,用于定义组件结构、样式和事件处理。通过ZUL文件,开发者可以编写可复用的界面模板,提高开发效率。 8. **MVC模式** ZK遵循Model-View-Controller...
此外,ZK还支持数据绑定和模板引擎,可以轻松实现界面和模型之间的数据同步。 **构建和运行ZK应用** 为了运行“ZkIntro”项目,你需要一个Java开发环境(如JDK)和一个支持ZK的Servlet容器(如Tomcat或Jetty)。...
Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用...
- `view`:视图层,存放小程序的页面模板和界面布局。 - `wxapp`:可能包含了小程序的主文件,如app.js、app.json、app.wxss等,定义了小程序的整体逻辑、配置和样式。 - `info.ini`:可能存储了应用的基本信息或...
7. **css**目录:这个目录存放了Cascading Style Sheets (CSS) 文件,用于定义网页的布局和样式。通过CSS,开发者可以控制页面元素的颜色、字体、大小、位置等,实现美观的界面设计。 8. **MD5加密**:MD5.asp可能...