重新定义了所有辅助性的标记

原实现中,Dorado7提供了Import、ImportStart、ImportEnd、ExportStart、ExportEnd这5种辅助性的标记。主要存在下面两方面的问题:

  • Import、ImportStart、ImportEnd可用于引入外部配置信息和作为模板中的占位符。当Import标记用于模板占位符时,该命名容易引入混淆。且我认为引入外部配置和占位符应该是两个完全不同的概念,不应公用一套标记。
  • 另外,Vangie提出Export标记的语义太过强烈,容易导致开发者忽略直接使用控件ID作为配置导出源的特性。

现对这些标记进行了重新定义,目前提供Import、GroupStart、GroupEnd、PlaceHolder、PlaceHolderStart、PlaceHolderEnd共6种辅助性的标记。

  • Import专用于引入外部配置信息,只有src一个属性。
  • GroupStart、GroupEnd替代原ExportStart、ExportEnd。
  • PlaceHolder、PlaceHolderStart、PlaceHolderEnd用于模板中的占位符。

对所有可在Spring中的配置的Loader、Register类Bean进行了整理优化

Dorado7中使用了很多实现Spring的PostBeanFactory接口的Bean用于定义配置文件的装载方式、注册控件、拦截器等。这次对所有这些Bean的API做了统一的调整优化。

默认不再使用集合的方式定义要装载或注册的内容

以dorado.packagesConfigLoader为例,原定义方法如下:

新的定义方法将调整为:

几乎所有的原来支持以集合的方式定义被注册内容的Bean都改为了非集合方式。做此调整的原因是未来大部分场景中每次只需要向系统中注册一个信息,没必要引入集合。如果确实需要一次性的注册多项信息,只要定义多个注册Bean即可。

统一命名起见,修改了dorado.dataConfigLoaderTemplate的名称。

原先在home:context.xml中的定义方法一般是:

今后应该为:

实现了ViewConfig对象

在目前的.view.xml中可以看到文件的根节点是一个ViewConfig节点,Model、View是其中的子节点。但是在实际的运行状态中,Dorado中并没有一个真正的ViewConfig对象,而是只会创建一个View对象,同时定义在Model中的私有的DataType、DataProvider等都是由View负责管理。这种设计不但容易引入误解同时也带来了很多其他问题。

例如原先我们为View提供了onCreateListener、onInitListener、onReadyListener三种监听器,其中onReadyListener只会为View需要渲染时才会被触发(通常是页面打开的过程中),而在Ajax视图访问View中的私有DataType、DataProvider时,View对象同样会被创建,但是不会触发onReadyListener。也就是说View是有rendering、service两种状态。这种设计方式同Dorado5非常相似,十分难以让人理解。

因此,在新的实现方式中。我实现了ViewConfig这样一个对象。View是ViewConfig中的一个子对象,而私有DataType、DataProvider等都将交由ViewConfig来管理。该结构与开发者在IDE中的看到的.view.xml的文件结构一致。ViewConfig在rendering、service两种状态下都可能会被创建,而ViewConfig中的View作为ViewConfig的可视部分则只会在rendering状态下会被创建。

基于上述调整,产生了如下一些不能向上兼容的改进:

  • 原有的onCreateListener、onInitListener、onReadyListener三种监听器被一个叫listener的监听器取代,当你的逻辑需要在rendering、service两种状态下都被触发时可以把逻辑定义在ViewConfig的listener中;当你的逻辑只需要在rendering状态下都被触发时可以把逻辑定义在View的listener中。例如动态为视图创建一些控件的逻辑就应该放在View的listener中。
  • 原View节点下的template属性被移到了ViewConfig节点中。
  • 原Dorado7内部的ViewManager对象已被移除,取而代之的是ViewConfigManager,其返回的对象也是ViewConfig的实例。

注意:在新的View的listener触发机制中,Dorado7已不会自动寻找名为onReady的方法,因此在指定listener时必须明确在服务定位表达式中声明方法名。
如果需要为某对象定义多个Listener,只需用","将多个服务定位表达式隔开即可。

Dorado7标准版首次打包发布。由于其中包含有完整的Eclipse,因此文件尺寸稍大。

注意这是一个可运行的安装文件,不要直接解压缩。

  • 在多数系统下,如果你已安装好了Java的运行环境只要直接双击即可进入安装过程。
  • 在部分系统中双击后可能只会打开WinRar或WinZip等,这取决你是否将.jar文件与之关联。在这种情况下,你需要在文件上点右键,在快捷菜单中选择"打开方式/Java XXXX"。

下载地址:ftp://bsdn.org/pub/projects/dorado7/dorado.7.0-ALPHA.110321.1512.full-installer.jar

感谢Vangie团队的幸苦工作使得Dorado7的第一个在线示例能够开始运转。首先上线的是Client Side API Documentation,我会尽快让更多的示例上线。

Client Side API Documentation的访问地址: http://dorado7.bsdn.org/jsdoc

此版本叫之间的版本在实现的功能方面变化不大,但Dorado7的引擎在此期间经历了较大的重构,并带来了示例代码的部分重构。

  1. 调整默认的models和views目录的存放位置,从/WEB-INF移至/src下,似乎这样更加方便开发阶段的管理。
  2. 修正了导致所有示例中的保存功能不可用的BUG。
  3. 为"员工组织结构浏览"示例增加保存功能。
  4. 将所有Hibernate Entity中的Annotation从Field上移动到相应的Getter上,由于新版本Hibernate的支持不通过Getter和Setter直接访问Bean中的Field,而此功能有悖于目前流行的POJO Bean的规范,且会令动态代理功能失效。,此与Dorado7的设计初衷产生冲突。暂时,Dorado7将不支持此种Hibernate使用方式。
  5. 调整了CategoryService和ProductService中的saveAll逻辑,之前的实现方式过度依赖Hibernate提供的Cascade模式的持久化,在性能和通用性方面都有较大局限。

下载地址: http://www.bsdn.org/projects/dorado7/download/detail/10

已由ALPHA升级为BETA,这意味着API的部分已不会再做较大变动,虽然到目前为止BUG还有不少。

ftp://bsdn.org/pub/projects/dorado7/dorado-client-edition.7.0-BETA.101116.1527.zip

  1. 产品更名为dorado7-client-edition。
  2. 将所有允许用户终止后续系统动作的事件中,用于告知系统是否继续后续动作的可写参数的名称统一为processDefault。
  3. 修正某些可拖动控件在鼠标拖动时造成网页内容被误选中的BUG。
  4. 修正run-jetty.sh不可使用的BUG。
  5. 修正slide-in、slide-out动画在连续、并行播放时可能导致的状态错乱。强制同一DOM对象的此类动画以队列方式执行。
  6. 新增blocks.html示例用于演示带有图像渲染器的块状视图控件。
  7. 新增mutable-tree.html示例用于演示如何通过代码操作维护一棵树。
  8. 新增portal.html示例用于演示一个简单的门户界面。

如在阅读此处的文档时发现任何明显的别字、语法错误,欢迎大家直接予以修正。
如对某概念或对象有更好的理解和解释,更是希望大家积极补充。
WIKI的精神就是共同参与。

Page的命名原则

由于在一个Space中Page是不能重名的,而有时Page的重名又不能完全避免。

例如在Dorado7的Space中我们有<Client Edition用户指南>和<Standard Edition用户指南>两份文档,而两份文档中又都会有一个章节叫做<安装与文件介绍>。为了避免Page重名,我们就不得不给两个章节起作不同的名字,可是如果叫<Client Edition用户指南-安装与文件介绍>又显得过于繁琐。

目前暂时决定采用如下的方式来处理。为每一份文档指定一个代码,例如<Client Edition用户指南>的代码是CE、<Standard Edition用户指南>的代码是SE。如此,两个子章节将分别命名为<安装与文件介绍 (CE)>和<安装与文件介绍 (SE)>。同时约定一份文档中的每一个子Page的名称都应以"空格(文档代码)"作为结尾。