文章
AOM组件属性测试案例发布说明
作为一个基于组件的web快速开发框架,AOM维护着大量展现组件。更新、维护这些组件,涉及到服务器渲染代码、javascript脚本代码、CSS样式表等方方面面,同时必须避免更改基类和通用CSS样式表时所产生的副作用,并考虑跨浏览器支持等问题。如何维持AOM展现组件质量稳定,实现可持续渐进发展,避免出现质量倒退,是AOM项目组面临一个极大的挑战。为了满足这一需求,AOM项目组在进行组件属性规范化的工作过程中,对组件属性测试案例进行了统一整理,形成了AOM组件属性测试案例工程。
Apusic OperaMasks 2.2M1 Release Note
这一版本的主要工作是提高产品健壮性,整理组件属性,完善组件参考文档。从8月21日发布AOM 2.1版之后,项目组对AOM中最为常用的layout与widget命名空间中的绝大部分组件进行了组件属性整理,为每一个属性编写了测试案例。检验了每个组件属性的有效性,删去不生效且没有价值的属性,修复不生效但应该支持的属性。根据检验结果修订了组件属性参考文档和Apusic Studio中的代码提示,使之更为清晰准确。并且,将属性测试案例用于自动化测试,为每个组件编写了自动化测试脚本,制定每日例行自动化测试策略,以确保项目的持续健壮发展。同时,对在编写测试案例过程中发现的,以及由客户和社区反馈的大量问题,都一一进行了处理。
如何创建一个原生AOM输入域组件
本文介绍如何在AOM中加入一个具有特殊功能的输入域组件:一个带有时间选择功能的日期组件。包括了从Javascript形态的EXT扩展控件开始到将这个控件纳入AOM体系成为原生AOM组件的全过程。由于输入域类组件体系在AOM中已经较为成熟,因此在本文中并不需关注Ajax特性(通过继承即可获得支持),主要着眼点是如何让组件在首次渲染时能正确展现,并且能在JSF的管理下与服务器进行交互。本文涉及修改AOM源代码,预期读者是AOM的开发人员和对AOM开发感兴趣的社区成员。
一个复合组件的衍化之路
在 C/S 编程中,我们从来没有苦恼过代码重用的问题,因为面向对象给了我们很好的解决方案。但在 B/S 编程中,如何解决页面内容的代码重用问题?在 Apusic OperaMasks中,模版与复合组件登场了。所谓模版,顾名思义:是指定一个大体不会变化的页面作为公用模版,在使用模版的时候,只需替换其中需要更改的内容。复合组件则恰恰相反,它是将某些可公用的页面内容封装起来,形成一个新的组件,然后再把这个新的组件拿出来复用。这两种方案,都能够有效解决页面级的代码重用问题,但笔者个人认为:复合组件的使用技巧更复杂,更巧妙,适用面也更广。本文,笔者会给大家描述一种适合使用复合组件的场景,并介绍在 Apusic OperaMasks 中,一个复合组件是如何一步一步衍化,从而更好的满足我们需求的。
JSP与JSF之间的编程差异
JSP是J2EE中最基本也是使用最广泛的Web开发技术,以致于从某种程度来说,很多开发人员认为 J2EE 就是JSP/Servlet再加上Struts/Spring/Hibernate等一些开源框架。JSF则是J2EE官方组织JCP所力推的新一代 Web开发技术, 虽然前几年一直不愠不火,但近一两年来,隐隐然有要爆发之势。那么,到底什么是JSP?什么是JSF? 这两者之间又有什么差异呢?本文试图对这两种技术进行一些简单的分析。
在AOM中使用动态语言
本文简单介绍了一下如何在AOM中使用ELite和JRuby两种动态语言。ELite与AOM的同源同宗,所以在AOM中使用ELite显得更为自然,更为简单,同时ELite的强大功能也让基于AOM的Web开发变得更为灵活。并且Spring对动态语言的支持,让动态语言的适应性得到了加强。
AOM2.0中的DataGrid之一:定义DataGrid
AOM2.0 Release版本对原有的DataGrid组件进行全面改进。新版的DataGrid修改了编程模型,为动态表格提供了更有力的支持和更清晰的数据模型。并且加入了对多表头的支持。下面我们将通过一系列例子来说明AOM2.0中新版DataGrid的用法。
在AOM2.0中使用CSS样式表来定制页面
虽然AOM提供了一套统一的默认风格来展示页面,并且也提供了好几套候选皮肤供用户选择,但显然,这些展现风格是无法满足复杂多变的应用场景的。而在实际应用中,用户往往希望基于某一套皮肤之上进行一些简单的细节扩展,而不想重新去定义整套皮肤。本节将介绍在AOM中使用独立的CSS样式表对展现效果进行定制的一些技巧与方法。
Apusic Studio 5.1M5 新特性一览
Apusic Studio 5.1M5发布以来,版本号已经更新至Patch2,功能也不断增强和完善。本文将会就M5版本中新添加或增强的特性进行详尽的介绍。
AOM 2.0的神奇魔力之八:消除状态--致JSF怀疑论者
长久以来,“状态的维护”是困扰 JSF 获得普及的一个很重要的因素。很多朋友一看到 JSF 页面中生成的那一大堆“ViewState”,就会不由的对其“毛骨悚然”:这样一种“重量”级的技术,能够被用到真正的项目中吗? 在 AOM 2.0中,对 JSF 的状态维护进行了彻底的改造。 AOM “干掉”了 ViewState,更确切的说法是: AOM 对 ViewState 的处理要优雅的多,消除了无用的、重复的状态信息。此外,AOM开发团队已经把对状态的处理机制提交给 JCP,并希望通过我们的努力,使 JSF 能够获得一个更广泛的认可。
AOM2.0开发实例入门之一:HelloWorld
OperaMasks是当今世界上相当有创造性,相当有活力的一个WEB开发框架, 借助开源社区庞大用户群的技术力量,以及借鉴世界上优秀开发框架的成功经验,她已经发展到更具创新和实用价值的AOM2时代。希望本文能够成为一个敲门砖,带领大家走进AOM2.0的神奇世界!
AOM 2.0的神奇魔力之七:Facelets,AOM更好的外衣
JSF是从很多已有的技术上发展过来的,如 JSP、Struts等。但 JSP 却未必是最好的 JSF 底层支撑技术。本文简要介绍了 Facelets 技术,以及 AOM 是怎样迎合 Facelets 的某些特性的。从绝大部分技术特性对比来看,与JSP相比,Facelets 是 AOM 更好的外衣。
AOM 2.0的神奇魔力之六:与 Spring/EJB3的无缝集成
在J2EE应用中,后台的业务编程模型已经有了优秀的并且经过业界验证的成熟解决方案,如 Spring、EJB 3等。其中,又以 Spring 在业界的使用更为广泛。本文主要介绍 AOM 是怎样和 Spring 紧密集成的,并顺带着介绍一下 对EJB 3的支持。如果您从本系列的第一篇文章开始读起,那么读完本文,笔者相信你已经可以用AOM做一个比较大型的业务系统了。
AOM 2.0的神奇魔力之五:LiteBean
LiteBean,脱胎于JSF规范中的 Managed Bean,在 AOM 2.0中,对 Managed Bean 做了大量的扩充,最终演化成了目前的 LiteBean。LiteBean 是 AOM 中非常重要的一个概念,它即是展现层与业务层之间的粘接器,同时也是 AOM 与其它成熟编程模型的粘接器,如 Spring、EJB 3 等。本文比较系统的介绍了 AOM 中 LiteBean 的相关概念及特性。
AOM 2.0的神奇魔力之四:模型事件
基于“Event/Listener”的事件机制, 是一种非常典型的Observer模式,它原本可以用来解决更多的架构设计问题,从而使系统的维护性及可扩展增强;但同时,事件也是一把双刃剑,如果滥用事件,则会让你的程序难以跟踪,难以理解。 本文介绍 AOM 2.0中的模型事件,如果你理解了它并将它用到恰当的地方,相信这会成为你日后工作中的一大利器!
Combo 示例
在我们的程序生涯中,经常会遇到多个下拉列表框进行互动的场景,譬如,当你选择不同的省市,需要切换不同的城市。针对这种场景,常规的解决方案是怎样的?它又有哪些弊端?AOM又是如何解决这些问题的?本文尝试对此问题进行分析。
AOM 2.0的神奇魔力之三:输入校验
人们曾经做过统计:假设开发一个软件系统的工作量是100,那么,该软件中为了验证用户的输入是否正确而花费的工作量,则占据其中的30%至40%。 AOM 2.0的输入校验功能是一种神奇的力量,如果你理解了它并能够运用得熟练自如,将会大幅提升你的工作效率!
AOM 2.0的神奇魔力之二:国际化
国际化多语言支持,其实是一个并没有多大技术含量的问题,但却是一个非常繁琐的事件。AOM 2.0中,对国际化的支持是一种神奇的魔力,一旦你洞悉它的奥秒,相信你再也离不开它,而你的工作,将会使你的心情一直保持愉悦!
AOM 2.0的神奇魔力之一:约定优于配置
J2EE开发人员的工作状况经常是:一边写着代码,一边维护着xml文件。我们已经对此厌倦不已,而“约定优于配置”则是解决这一问题的有效手段。 本文通过一个小小的例子,介绍AOM是怎么遵循并始终贯彻这一原则的。如果你照着笔者的文字一步步做一下这个例子,两分钟之后,你会感觉到这是一种神奇的魔力!
IoVC,一种新的编程思想
IoVC——“Inversion of View-Control”,即“视图控制反转”,换言之:它把对“View(即 UI 视图)的控制力”注入到你的后台业务逻辑中。这样一来,你在编写业务逻辑的过程中,对 View 拥有足够的控制力,从而能够将展现层与业务逻辑完全的解耦。IoVC是一种新的编程思想,而 AOM 2.0则是它的完美演绎。正是因为IoVC的思想,使AOM 2.0拥有一种神奇的魔力!
JBoss Seam集成支持
JBoss Seam是一个强大的应用框架,通过整合流行的面向服务架构(SOA)技术如AJAX、JSF、Enterprise Java Beans(EJB3)、Java Portlets、业务过程管理(BPM)和工作流,来构建下一代web2.0应用。这篇文章介绍AOM与JBoss Seam的无缝集成。
AOM-Tutorials 8:数据验证
本系列文章是作为 JSF & AOM 的入门教程。本文是此教程的第八篇,介绍如何在JSF中进行数据验证,包括手工校验、隐式校验、显式校验,以及编写自己的校验方法。
AOM-Tutorials 6:事件处理机制
本系列文章是作为 JSF & AOM 的入门教程。本文是此教程的第六篇,介绍JSF的事件处理机制,包括 ActionListener 与 ValueChangeListener。
AOM-Tutorials 3:托管 Bean
本系列文章是作为 JSF & AOM 的入门教程。本文是此教程的第三篇,介绍如何在AOM中使用Managed Bean,既介绍了JSF规范中定义的标准用法,也介绍了AOM是如何对其进行简化与增强的。
AOM-Tutorials 1:JSF 概要介绍
本系列文章是作为 JSF & AOM 的入门教程。 本文是此教程的第一篇,主要介绍一些JSF的基础知识,并将其和 Struts 等其它 Web 开发解决方案进行一些比较。
Apusic Studio使用教程之Web开发(四)
JSF引入了一个重要的概念:Managed Bean。JSF提供了强大的管理bean的机制。一个被JSF管理的JavaBean对象叫做Managed Bean。一个Managed Bean描述了一个bean如何创建和管理的,这些和bean的功能无关。
Apusic Studio Step By Step教程之3---快速的CRUD开发
续Hello Duke篇,本文将通过一个更丰富的 示例,介绍如何通过Apusic Studio快速的开发一个CRUD应用。文中会涉及到EJB模块,JPA模型编程、JPA数据源配置等,同样文章最后将会附上该示例的源代码和Flash 演示,供大家下载。
Apusic OperaMasks与Spring的集成
Spring 是一个解决了企业应用程序开发复杂性的开源框架,被广泛的应用在众多的应用系统中。在Apusic OperaMasks(以下简称AOM)1.1版本以后,提供了对Spring的全面支持。
Apusic Studio Step By Step教程之2---Hello Duke
续概述篇,本文将通过一个简单的Hello Duke 示例,介绍如何通过Apusic Studio开发一个简单的应用。文章最后将会附上该示例的Flash 演示,供大家下载。
Apusic Studio Step By Step教程之1---概述篇
本Step by Step教程将会通过一系列的例程深入地讲解如何运用Apusic Studio进行开发。力图通过这些使用流程教会读者能够快速上手使用。
Facelet: 被布局管理器所管理的最小单位
我们在进行页面布局的时候,从构成的角度来说,一个页面可以归纳为两个重要的要素:一个是骨架,也就是整体结构,说明页面大体长成什么样子;另一个就是血肉,构成整体结构中每个部分的内容。光有骨架的页面是惨不忍睹的,有了血肉,整个页面才会完整丰满了。如果说布局是骨架的话,那么Facelet,就是血肉,它负责的是布局规定下的每个小部分的内容。
AJAX Updater: 部分装载和刷新页面的一小部分
AJAX Updater是一个很重要的AJAX组件, 而且是一个很有特色的组件,具有真正实用价值的强大工具。Updater与周围环境的关系是既分离又融合,从行为上看,它是分离的,可以独立渲染,独立导航;从程序控制方面看,它又是融合的,Updater与外围的页面构成同一棵JSF组件树、同一个页面,因此为你控制它与外界的交互带来方便。
勇敢者的新世界
Apusic OperaMasks到底是什么?为什么需要Apusic OperaMasks?它能够解决什么问题?它与其它的Web开发解决方案有何区别?它最主要的技术特性是什么?希望通过本文的阅读,使您能够对 Apusic OperaMasks 有个比较深入的了解。
体验Ajax
想知道Apusic OperaMasks是如何对Ajax提供原生支持的吗?想知道一个标准的JSF应用,是如何通过一个配置参数的更改,即可以无缝变成Ajax Enabled的应用吗?立即体验Apusic OperaMasks的新特性吧!
体验Rich Components
OperaMasks提供了一组功能丰富的Rich Components,包括BorderLayout,Form Components,Paging,Tree,DataGrid,DataView,Menu等。使用BorderLayout,AccordionLayout规划你的页面布局;使用Tree,Paging组织你的数据;使用DataGrid和DataView展现你的数据;使用Rich Form进行用户数据交互;使用Chart描绘你的数据。还有更多特性,待您一一体验 ....
OperaMasks快速入门
OperaMasks是当今世界上相当有创造性,相当有活力的一个JSF引擎,堪与任何一个JSF实现相比较 。它不但在技术和思想上傲视群雄,更以多项创新性成果独步天下;不仅仅提供JSF引擎的支撑,而且提供丰富好用的组件;最重要的是,所有这一切,都是开源的! 一件作品的好坏,不在于它的作者如何吹嘘,而在于广大用户的评价,俗话说:百闻不如一见,不想亲眼目睹它的奥妙吗?不想亲身体验它的神奇吗?想?那么快快跟我来进入OperaMasks的世界吧!
Rich Form:瞬间改变普通表单的外观
我们知道,JSF规范中提供的标准的JSF组件是基于HTML标准控件的,比如文本输入框、提交按钮、下拉框等等。这些标准HTML控件的外观是我们所熟知的那种普通外观。而JSF的渲染是可以独立于组件的模型的,这为我们提供了一个途径,使我们可以暗中改变标准组件的渲染方法,而组件模型甚至组件的使用者并不知晓。这样我们可以神不知鬼不觉地使标准HTML控件乏善可陈的外观变得更酷更炫,且具有换肤功能。
使用BorderLayout组件管理Web页面的布局
熟悉Java Swing编程的朋友一定知道Swing中的BorderLayout布局,这个布局简单而且好用,深受广大程序员的喜爱,它通过把界面分成东南西北中五个部分,来解决页面的布局问题。我们在Web页面中能不能有一个这样简单实用的布局呢?答案是肯定的,我们可以通过一个JSF组件来解决这个问题,而且,比Swing中的BorderLayout的功能还要强大!
使用DataGrid(数据表格)展示你的数据
本文通过一组示例,循序渐进的介绍了DataGrid的特性及使用方法,DataGrid包含如下特性: 后台异步方式装载数据; 内置的分页支持; 右键菜单支持; 列排序、列拖动、列锁定、列隐藏; 列头锁定; 客户端/服务器端事件支持; ……
DataView:用任何你能想到的方式展现你的数据
对于数据库中的数据,通常的展现方式是表格,然而,表格的缺点是有些古板,能不能以一种比较自由的形式展现数据呢?DataView为你提供了另外一种选择,它可以充分发挥你的想象力,允许你来指定数据展现的方式,原则上来说,它允许用任何你能想到的方式展现你的数据。
用Tree组织你的数据
OperaMasks提供了一个功能灵活而又简单易用的Tree组件,包括以下特性:支持静态定义树节点,也支持从服务器端异步装载节点数据;提供Ajax方式的事件监听器,可监听Expand,Collapse,Click和DblClick事件;可定制树节点的显示,例如Text和Image;提供了一组服务器端API,可编程控制树的行为。这篇文章将通过三个简单示例,向您介绍如何使用OperaMasks Tree组件。