??xml version="1.0" encoding="utf-8" standalone="yes"?>韩日精品一区,国产乱论精品,国产精品久久综合http://www.aygfsteel.com/nicholas-sjy/category/18877.html老了没有回忆不要紧,要是只有一大堆后悔惨?/description>zh-cnWed, 28 Feb 2007 04:17:35 GMTWed, 28 Feb 2007 04:17:35 GMT60Dorado on the road - finalhttp://www.aygfsteel.com/nicholas-sjy/articles/97034.htmlNic Sense ZoneNic Sense ZoneWed, 31 Jan 2007 09:52:00 GMThttp://www.aygfsteel.com/nicholas-sjy/articles/97034.htmlhttp://www.aygfsteel.com/nicholas-sjy/comments/97034.htmlhttp://www.aygfsteel.com/nicholas-sjy/articles/97034.html#Feedback0http://www.aygfsteel.com/nicholas-sjy/comments/commentRss/97034.htmlhttp://www.aygfsteel.com/nicholas-sjy/services/trackbacks/97034.html Dorado on the way Q?final

      本来想l前面陆陆箋l的两篇关于Dorado的文章,但想想ؓ了大家查阅方便,q脆来一个final版,一ơ性写出来?br />


 

2006q?font face="Times New Roman, serif">12?font face="Times New Roman, serif">25?/p>


今天是圣诞节Q进入公司已l四个月了,可是对公司的产品Doradoq几乎是一个门外汉Q?font face="Times New Roman, serif">(我要说明一下,不是我太W,刚刚q入公司接受了一个传l项目的开发,再加之学校的事情Q在此我x应该声明一点,我还是一个大四的学生Q快l束大学四年的学习了Q到最后,׃八糟的事情实在是太多了,q个报告那个报告的?font face="Times New Roman, serif">)

Thomas(我们公司的品经?font face="Times New Roman, serif">)Q还有范l理Q实在是不好意思,q有公司的同事,虽然我比他们中的好多入公叔R早,可惜我不是最厉害的,臛_现在不是?/p>

C个星期ؓ止,学校的事情基本上已经完了Q毕业设计的N也选了Q选的N是《基于智?font face="Times New Roman, serif">Agent的分布式Ud计算处理》,本来一开始自作聪明,以ؓ题目为“移动计”嘛Q就是移动设备的计算处理Q智?font face="Times New Roman, serif">Agent嘛~估计是一UŞ式而已Q我自从从大学二q自学Java开始,接触?font face="Times New Roman, serif">Java中的JavaSE?font face="Times New Roman, serif">JavaEE两个体系Q正好可以借此NQ让我对JavaME有所了解Q也实现了完成毕业设计的作用。结果后来导师选好了以后,看着导师l的材料Q我才知道,我陷入惔潭了?font face="Times New Roman, serif">(导师Q原谅我q么_呵呵·)

今天是我真正学习Dorado的第一天,公司l了我一些资料,所以我信心十Q我要赶上公司的其他同事Q呵呵~争取过他们哦~已经习惯了要做到最好,我是不是太自大了Q?

q是跟我学习Java一P首先在公司的官方|站(http://www.bstek.com/)下蝲?font face="Times New Roman, serif">Dorado的最q版本,我下载的版本?font face="Times New Roman, serif">Dorado-5.0 061129.1132Q一q还下蝲?font face="Times New Roman, serif">Dorado 5 快速入门,lg使用技巧,当然q有Dorado?font face="Times New Roman, serif">APIQ-我的最爱?/p>

首先看了Benny(我们公司?font face="Times New Roman, serif">CTO)录制的两D视频说明,依照Dorado安装自带?font face="Times New Roman, serif">doradosampleQ把dorado的大致功能作了一个讲解说明,个h感觉doradoq是挺有市场前景的,只是需要更大的宣传?/p>

好了Q闲话不多说了,开始我?font face="Times New Roman, serif">Dorado之旅吧~


首先Q需要了解的是:视图模型Dorado开发当中非帔R要的对象Q它装?font face="Times New Roman, serif">Dorado的界面逻辑和操作逻辑Q即主要包含什么数?font face="Times New Roman, serif">dataset Q以及这些数据通过什么Ş式来展现?/p>

下面是我今天学习中,觉得需要注意的一些地方和术语?/p>


  • Dataset

    1. getDataset(“datasetName? ; 获取?font face="Times New Roman, serif">dataset的引?/p>

    2. RecordIterator ri = dataset.recordIterator() ; 获取?font face="Times New Roman, serif">dataset的P代器引用?/p>

    3. ?font face="Times New Roman, serif">dataset的遍?/p>

      while(ri.hasNext()){

Record record = ri.nextRecord() ;

// Ҏ条记录的操作

    }

    4. 可是通过getControl(“controlName? ; 获取lg的引?/p>

      注意Q这里得到的?font face="Times New Roman, serif">Control对象Q需要进行类型的强制转换?/font>

    5. ”Module数据坞”的说明?/p>

      1). 数据坞里面的dataset对象可以被不同的视频模型索引用,以达到数据共享的?font face="Times New Roman, serif">用?/p>

2). Module不应该包含Q何的业务逻辑Q这是一U良好的设计模式?/p>

3). Module的创建和销毁由Dorado提供的容器来理Q可以当做一?font face="Times New Roman, serif">Singleton?font face="Times New Roman, serif">使用?/p>

所以在l大部分情况下,?font face="Times New Roman, serif">Module里面d非静态的属性都不是正确 (或者是不太明智)的做法?/p>

4). Module中的dataset的创建和销毁?font face="Times New Roman, serif">dorado提供的容器来理的,但开发h员可以强刉过scope?font face="Times New Roman, serif">timeout来定?font face="Times New Roman, serif">dataset的生命周期?/p>

5). scope有三U取|分别?font face="Times New Roman, serif">request (默认)Q?font face="Times New Roman, serif">session Q?application?/p>

需要特别注意的是,在同一?font face="Times New Roman, serif">request?font color="#800000">q箋以不?/font>?font face="Times New Roman, serif">pageIndex Q?font face="Times New Roman, serif">pageSize Q?font face="Times New Roman, serif"> parameters的不同组合来获取Module中的datasetQ但获?font color="#800000">多个不同?/font>dataset 实例?/p>

6). 如果Z提高效率而将scope讄?font face="Times New Roman, serif">application Q则应该注意让此dataset中的数据量不要过大。常用在大型pȝ中的代码表?/p>

6. 通过dataSet.getCurrent() ; ҎQ可以从dataSet获取当前记录。由?font face="Times New Roman, serif">dataSeth

?/font>当前记录”这个,所以大多数操作都是对“当前数据”来说的?/p>

  • Mapping

    1. 所有的Mapping单元都是通过名ؓglobal的管理单元来q行理的?/p>

2. 在请求映的q程中,dorado有着自己独特的,不同?font face="Times New Roman, serif">Struts的映机Ӟ

例如Q对于请求:action=”access.login.d?/font>

access 与对应的controller的名UC_

?font face="Times New Roman, serif">login与对应的action的名UC致?/p>

3. controller?/span>clazz属性所表示的是用于处理q个h?/span>class Q类gStruts中的 Action Q而提交的数据Q就?/span>Struts 中的ActionFrom转换成了Dorado?/span>dataset.

4. 对于面的访问安全控?font face="Times New Roman, serif">(卛_能通过dorado式的hQ而不容许以文件结构\?font face="Times New Roman, serif">来访问,?font face="Times New Roman, serif">../demo/XX.jsp)Q可以将view中的safe属性设|ؓtrue来控制?/p>

或者通过dorado默认?font face="Times New Roman, serif">setting中的security.accessChecher来控制。不q我可以自主创徏一?font face="Times New Roman, serif">AccessCheckercd?font face="Times New Roman, serif">javacLq行控制。但需要将setting.xml里面?font face="Times New Roman, serif"> “security.accessChecker?/font>属性修改ؓ自己创徏的类路径?/p>

5. 可以通过DoradoContext来访?font face="Times New Roman, serif">dorado的上下文信息Qƈ通过标记量来告诉dorado 的上下文从哪里获取需要的变量?/p>

例如Q?/p>

Object obj = doradoContext.getAttribute(DoradoContext.SESSION,”username? ;


  • i18n

    1. 你需要在i18n目录下新Z?font face="Times New Roman, serif">I18N?font face="Times New Roman, serif">propertiescd文g。此cL件与java中的

    一_都是以键Q值对的Ş式存在?/p>

    2. ?font face="Times New Roman, serif">dataset中的Fields里面讄?font face="Times New Roman, serif">${Resource.fileName.key}的Ş式进行设|。这个就

    有点cM?font face="Times New Roman, serif">JSP2.0中的ELQ其中,fileName是资源文件的文g_不包?font face="Times New Roman, serif">_cn_ZH

    {类似的字样。?font face="Times New Roman, serif">key是在文g中的键。这些都是在pȝ?font face="Times New Roman, serif">setting.xml中的

    ?font face="Times New Roman, serif">common.locale.language?/font>和?font face="Times New Roman, serif">common.locale.country ?/font>来进行的配置。同P你可

    以通过修改q两个属性来启用不同?font face="Times New Roman, serif">I18N文g?/p>

3. 对于动态更改用L国际化资源的情况Q可以?font face="Times New Roman, serif">

LocalHelper.getLocale(“language?”country?,

ResourceManager.getInstance().setDefaultLocale(context,

DoradoContext.SESSION,

locale) ; 来设|?

  • EL

    ?font face="Times New Roman, serif">JSP2.0斚w的书c中有大量的l典介绍Q这里就不再记录?/p>

    开发时Q只需CDorado内置的隐式变量,卛_?/p>

  • Skin

    1. 皮肤文g夹存攄位置是在skins文g夹下面的?/p>

    在用新皮肤Ӟ只需要修?font face="Times New Roman, serif">setting.xml中的view.smartweb2.skin对应的值即可?/p>

    2. 同时可以通过修改skin.css文g来修?font face="Times New Roman, serif">dorado中的标签库的所有展C风根{?/p>

    3. 同时也支持传l的JSP开发,卛_<head>标签中设|相信的各种属性,以完成让

    dorado以用戯定义的Ş式进行展现?/p>



2007q?font face="Times New Roman, serif">1?font face="Times New Roman, serif">1?/p>



关于Dataset


  1. 可以通过RecordIterator ?font face="Times New Roman, serif">dataset中的数据q行遍历(包括已经在客L“删除”的记录)?/p>

    Z么在客户端已l“删除”的记录Q?/b>dataset仍然可以遍历刎ͼ

    原因在?font face="Times New Roman, serif">DoradoZҎ能的考虑Q在客户端做的删除ƈ没有立刻更新服务器段的记录,而仅仅是在客L?font face="Times New Roman, serif">dataset中做了删除的标记。在用户提交了以后,才会Ҏ务器端的记录做修攏V所以用户在客户端做的删除操作后Q如果刷新页面,删除的记录将会重新出现?/span>

    可以通过如下代码?font face="Times New Roman, serif">dataset中已l标Cؓ“删除”的记录q行遍历Q?/p>

RecordIterator rit Q?dataset.recordIterator() ; // 获取dataset的遍历器

rit.setVisibility(Dataset.FILTER_DELETED) ; // 讄遍历器的可见属?/p>

while(rit.hasNext()){

Record record = rit.nextRecord() ; // 取得当前?font face="Times New Roman, serif">Record对象

// 对记录进行操?/p>

}



  1. isFirst 以及 isLast的理?/p>

    ?font face="Times New Roman, serif">dataset中容易犯下的错误是?font face="Times New Roman, serif">isFirst?font face="Times New Roman, serif">isLast的误解?/p>

    isFirst?font face="Times New Roman, serif">isLastq不像大家想象当中的那样Q代表着Dataset的当前记?font color="#ff3333">Q注意,所有对Dataset的操作,都是对“当前记录”而言Q?/font>是否是第一条记录或者是最后一条记录。他们真正的含义如下Q?/p>

isFirstQ?/p>

官方解释Q?/p>

isFirst表示Dataset已经在试囄l向前移动当前记录的q程p|Q亦?font face="Times New Roman, serif">?font face="Times New Roman, serif">dataset的当前记录从W二条记录{到第一条记录时isFirst仍然?font face="Times New Roman, serif"> falseQ只有当Dataset试图l箋向前Ud当前记录后,isFirst才会变成 trueQ此?font face="Times New Roman, serif">dataset的当前记录仍然是W一条记录?/p>

我的理解Q?/p>

对于isFirstQ你可以?font face="Times New Roman, serif">Java当中?font face="Times New Roman, serif">Iterator作对比。我们假?font face="Times New Roman, serif">Java中的 Iteratorhprevious()Q就?font face="Times New Roman, serif">next()倒着遍历()Q那么当当前记录从第?font face="Times New Roman, serif">条作previous()成功到达W一条记录的时候,isFirst仍然q回falseQؓ什么?因ؓ在移动过E中没有受阻Q它成功的前UM。下面要注意了,?font face="Times New Roman, serif">在当前记录已l在W一条了Q现在如果当前记录再试图向前UdӞ?font face="Times New Roman, serif">时受MQ因为在当前记录前面已经没有记录可以Ud了,此时 isFirst()q回true?/p>

如下图:

?
?font face="Times New Roman, serif">dorado的设计过E中Q数据导航条的数据前Ud后移q程中,q不?font face="Times New Roman, serif">查看当前记录是否是第一条或者是最后一条数据,而是默认前或者后q?font face="Times New Roman, serif">有数据,从而l作向前或向后的操作Q只有在Ud受阻后,才修Ҏ否到边界的标讎ͼq样或许在移动操作中可能会对Ud的性能有一定的帮助?/p>

个h认ؓQ这里把isFisrt()看作是对当前记录的操作时候“越界”的?font face="Times New Roman, serif">志更为合适?/p>

IsLastQ?/p>

官方的解释:

isLast表示Dataset已经在试囄l向后移动当前记录的工程p|Q亦?font face="Times New Roman, serif">?font face="Times New Roman, serif">dataset试图l箋向前Ud当前记录后,isFirst才会变ؓtrueQ此?font face="Times New Roman, serif"> Dataset的当前记录仍然是倒数W一条记录?/p>

我的理解Q?/p>

可以ҎisFirst来理解,我觉得我已经解释的比较清楚了?/p>



  1. moveFirst ?moveLastҎ

    当用戯用了Dataset?font face="Times New Roman, serif">moveFirst?font face="Times New Roman, serif">moveLast之后Q?font face="Times New Roman, serif">Dataset?font face="Times New Roman, serif">isFirst?font face="Times New Roman, serif">isLast立刻被置?font face="Times New Roman, serif">true?/p>

    ?font face="Times New Roman, serif">dataset没有M可见记录的时候,isFirst?font face="Times New Roman, serif">isLast同时ؓtrueQƈ且当前记录ؓnull?/p>

    惛_在前面理解了我对isFirst?font face="Times New Roman, serif">isLast的讲解之后,对这两个Ҏ的理解应该不会出C么偏差了?/p>

不过我想提醒大家一下,注意我这里的用词Q是“可见记录?/font>Q即是说Q如果在客户端删除了所有的记录Q虽然没有向服务器提交,但此?font face="Times New Roman, serif">isFirst?font face="Times New Roman, serif">isLast都会同时q回true。这里就很好的统一了对用户的“体验一致性”,即用戯为已l没有数据了?/p>



  1. 不知道大家有没有在浏览器中查看过Dorado生成?font face="Times New Roman, serif">jsp文g的源代码Q其实这些源代码都是通过html?font face="Times New Roman, serif">xml界面模板信息共同展现的?/p>



  1. Dorado内部加蝲序Q第一步: 客户端发?/p>

                                                         W二步:初始?视图模型

                                                         W三步:初始?Dataset

                                                         W四步:初始?lg

                                                         W五步:完成lg?font face="Times New Roman, serif">Dataset之间的绑?/p>

                                                         W六步: Dataset向外部请求数据,完成数据加蝲

                                                         W七步:向客Lq回HTML/XML界面模板信息

                                                         W八步:完成Q显C页?/p>





2007q?font face="Times New Roman, serif">1?font face="Times New Roman, serif">8?/p>


  1. Dataset中最重要的方法: flushData()

功能我想我不说大家也知道Q就是通过不刷新页面来实现数据更新与交换?/p>

  • 在设|对象的属性于视图模型中的字段的时候,可是使用在试图模型中?font face="Times New Roman, serif">objectClazz来帮助我们实现这个一一对应的关pR-fromDOҎ

    注:因ؓq里是根?font face="Times New Roman, serif">java class中的属性名UC一映射的,所以如果出现属性名UC试图模型中所希望的字D名UC一致的时候,可以使用property属性来辅助我们?/p>

  • 异步交互Q?/p>

      ?font face="Times New Roman, serif">dataset中设|?font face="Times New Roman, serif">autoLoadData?font face="Times New Roman, serif">falseQƈ且设|?font face="Times New Roman, serif">async?font face="Times New Roman, serif">true?/p>

  • MasterLinkQ?/p>

    M表的讄Q?/p>

    • Ҏ一Q?修改主表?font face="Times New Roman, serif">Dataset中的afterScroll事g?/p>

    • Ҏ二: ?font face="Times New Roman, serif">masterLink中设|,便可以完成同L功能?/p>

      • 特点Q可以缓存已l下载的数据

  • 在中讄多个监听器,各个监听器之间用逗号分隔?/p>

    在监听器中分别提供了beforeXX?font face="Times New Roman, serif">afterXXҎQ其?font face="Times New Roman, serif">afterXX的返回gؓvoidQ?font face="Times New Roman, serif">beforeXX的返回gؓboolean型,q样如果?font face="Times New Roman, serif">beforeXXҎ中返?font face="Times New Roman, serif">falseQ就可以实现中止标准?font face="Times New Roman, serif">dataset.XX()以及监听器本w的afterXX()Ҏ的操作?/p>

  • ViewProperties

    • 在传l的开发方式中Q常帔R过getParameter()Ҏ来获取页面的参数信息。但是需要注意以下的提示Q?/p>

      ?font face="Times New Roman, serif">dorado中,可以通过两种方式来发?font face="Times New Roman, serif">requesthQ一U是通过JSP面来发?font face="Times New Roman, serif">requesthQ还有一U是通过客户端的dataset?font face="Times New Roman, serif">flushData()Ҏ来发?font face="Times New Roman, serif">requesthQ但需要注意的是,通过q两U方式生的requesth是完全不通的request对象。所以通过cM?font face="Times New Roman, serif">DoradoContext.getContext().getParameter(“pageSize?q样的方法在W一U?font face="Times New Roman, serif">requesth中是正确的,可以获得通过JSP面传送的pageSize参数Q但在第二种request中,通过q样的方法所得到的就?font face="Times New Roman, serif">nullQ需要特别的注意?/p>

      所以,在开发中常常遇到的问题就是你W一|C的没有问题Q但是当你点M一늚时候,׃有问题。这是因为第一|通过JSP面发送的hQ而当点击下一늚时候,是通过客户端的Dataset来发送的h?/p>

      如果通过ViewProperties方式Q就不存在这L问题?/span>

      具体使用如下Q?/p>

        DoradoContext.getContext().getAttribute(DoradoContext.VIEW,”pageSize? ;

      q个Ҏq回的是Objectcd的返回|你只需要做适当的强制{型即可?/p>


    • 我们可以从服务器端或者客L来访问、存?font face="Times New Roman, serif">ViewPropertiesQ用“推”的形式来实现客L于服务器端之间的数据传?/p>

      • 服务器端Q?/p>

        DoradoContext.getContext().setAttribute(DoradoContext.VIEW, key, value) ;

        DoradoContext.getContext().getAttribute(DoradoContext.VIEW, key) ;

      • 客户端:

        getViewModel().properties().getValue(key) ;

        getViewModel().properties().setValue(key, value) ;

      • 同时Q我们也可以通过EL表达式来方便的访?font face="Times New Roman, serif">viewProperties属性:

        ${ViewProperties.XXX},

        ${ViewProperties.getString(“XXX?}

  • 数据校验

    ?font face="Times New Roman, serif">dataset中添加校验器来完?/p>

      ?font face="Times New Roman, serif">dataset?font face="Times New Roman, serif">beforeChange()Ҏ中添加代码?/p>

      例如可以使用如下方式Q?/p>

        switch(field.getName()){

case “key1?: {

// code here

}

...

}

  • 记录状?/p>

    • none Q无状态: 当数据下载到客户端,此时记录是“无状态”的Q这?font face="Times New Roman, serif"> Dorado的默认状态?/p>

    • new Q新增状态:表示该记录刚刚被d到数据集Qƈ且尚未得到验证和认。如果此时我们执行了对该记录的撤销Q那么该记录被从数据集中移除?/p>

    • insert Q已d状态:表示q是一条新增的q且已经l过验证和确认的记录?/p>

    • modify Q已修改状态:表示q是一条数据已l被修改的ƈ且已l经q验?font face="Times New Roman, serif">和确认的记录?/p>

    • delete Q?已删除状态:表示q是一条被标记为已删除的记录。默认Ş式下此种记录是不可见的,我们Ҏ据集的遍历操作也不会得到该记录。但是我们前面还是接受了一U方法,可以遍历到这c记录?/p>

可以通过Rocord.getState()Ҏ获得记录的状态信息?/p>

q且可以通过dataset.getOldRecord(Record r)来获取记?font face="Times New Roman, serif">r的原始倹{?/p>




lg开?/b>


. DataTable

  1. 分配下蝲功能Q?讄autoLoadPage?font face="Times New Roman, serif">true

  2. 在表gQ列标题常常需要汉化成Z文,我们不徏议您?font face="Times New Roman, serif">DataTable里直接修改,管q样做也可以辑ֈ目的Q我们徏议您在与DataTablel定?font face="Times New Roman, serif">Dataset中的Fields中进行修攏V?/p>

  3. fixedColumn来设|锁定的列数?/p>

  4. confirmCancel?font face="Times New Roman, serif">confirmDelete属性可以设|对表格q行快捷键的操作Ӟ是否弹出相应的提CZ息?/p>

  5. editable来设|表格是否可~辑?/p>

  6. 通过headerHeight可以讄表格头的高度?/p>

  7. ignored属性是控制表格向客L输出Q一旦设|ؓtrueQ在客户端将不会有这个表格元素存在?

  8. top?font face="Times New Roman, serif">left用来讄表格在屏q的l对位置?/p>

  9. 在修改事件的时候,q回gؓfalseQ表明不需要再l箋执行pȝ默认的执行方式,而只执行我们自定义的执行方式卛_?/p>

  10. 我们可以通过dataset.getField(“fieldName?.setReadOnly(true) 来控制具体某一个单元格的只d性?/p>

    对表格可~辑状态控制的具体ȝQ?/p>

    行状态:利用dataset?font face="Times New Roman, serif">afterScroll动态设?font face="Times New Roman, serif">dataset?font face="Times New Roman, serif">readOnly属性实现?/p>

    列状态:利用column?font face="Times New Roman, serif">readOnly属性实现?/p>

    指定m?font face="Times New Roman, serif">n列的所在单元格状态:?font face="Times New Roman, serif">dataset?font face="Times New Roman, serif">afterScroll动态设?font face="Times New Roman, serif">field?font face="Times New Roman, serif">readOnly属性实现?/p>




Nic Sense Zone 2007-01-31 17:52 发表评论
]]>
Dorado on the Road - 2http://www.aygfsteel.com/nicholas-sjy/articles/Dorado-2.htmlNic Sense ZoneNic Sense ZoneMon, 01 Jan 2007 00:08:00 GMThttp://www.aygfsteel.com/nicholas-sjy/articles/Dorado-2.htmlhttp://www.aygfsteel.com/nicholas-sjy/comments/91262.htmlhttp://www.aygfsteel.com/nicholas-sjy/articles/Dorado-2.html#Feedback1http://www.aygfsteel.com/nicholas-sjy/comments/commentRss/91262.htmlhttp://www.aygfsteel.com/nicholas-sjy/services/trackbacks/91262.htmlDorado on the way

2007q?font face="Times New Roman, serif">1?font face="Times New Roman, serif">1?/font>



关于Dataset


  1. 可以通过RecordIterator ?font face="Times New Roman, serif">dataset中的数据q行遍历(包括已经在客L“删除”的记录)?/p>

    Z么在客户端已l“删除”的记录Q?/b>dataset仍然可以遍历刎ͼ

    原因在?font face="Times New Roman, serif">DoradoZҎ能的考虑Q在客户端做的删除ƈ没有立刻更新服务器段的记录,而仅仅是在客L?font face="Times New Roman, serif">dataset中做了删除的标记。在用户提交了以后,才会Ҏ务器端的记录做修攏V所以用户在客户端做的删除操作后Q如果刷新页面,删除的记录将会重新出现?/span>

    可以通过如下代码?font face="Times New Roman, serif">dataset中已l标Cؓ“删除”的记录q行遍历Q?/p>

 1RecordIterator rit Q dataset.recordIterator() ; // 获取dataset的遍历器
 2
 3            rit.setVisibility(Dataset.FILTER_DELETED) ; // 讄遍历器的可见属?/span>
 4
 5            while(rit.hasNext()){
 6
 7                     Record record = rit.nextRecord() ; // 取得当前的Record对象
 8
 9                     // 对记录进行操?/span>
10
11            }

12

 

  1. isFirst 以及 isLast的理?/p>

    ?font face="Times New Roman, serif">dataset中容易犯下的错误是?font face="Times New Roman, serif">isFirst?font face="Times New Roman, serif">isLast的误解?/p>

    isFirst?font face="Times New Roman, serif">isLastq不像大家想象当中的那样Q代表着Dataset的当前记?font color="#ff3333">Q注意,所有对Dataset的操作,都是对“当前记录”而言Q?/font>是否是第一条记录或者是最后一条记录。他们真正的含义如下Q?/p>

          isFirstQ?/p>

          官方解释Q?br />                  isFirst表示Dataset已经在试囄l向前移动当前记录的q程p|Q亦?font face="Times New Roman, serif">?font face="Times New Roman, serif">dataset的当前记录从W二条记录{到第一条记录时isFirst仍然?font face="Times New Roman, serif">falseQ只有当Dataset试图l箋向前Ud当前记录后,isFirst才会变成 trueQ此?font face="Times New Roman, serif">dataset的当前记录仍然是W一条记录?/p>

         我的理解Q?br />                  对于isFirstQ你可以?font face="Times New Roman, serif">Java当中?font face="Times New Roman, serif">Iterator作对比。我们假?font face="Times New Roman, serif">Java中的 Iteratorhprevious()Q就?font face="Times New Roman, serif">next()倒着遍历()Q那么当当前记录从第?font face="Times New Roman, serif">条作previous()成功到达W一条记录的时候,isFirst仍然q回falseQؓ什么?因ؓ在移动过E中没有受阻Q它成功的前UM。下面要注意了,?font face="Times New Roman, serif">在当前记录已l在W一条了Q现在如果当前记录再试图向前UdӞ?font face="Times New Roman, serif">时受MQ因为在当前记录前面已经没有记录可以Ud了,此时 isFirst()q回true?/p>

如下图:


?font face="Times New Roman, serif">dorado的设计过E中Q数据导航条的数据前Ud后移q程中,q不?font face="Times New Roman, serif">查看当前记录是否是第一条或者是最后一条数据,而是默认前或者后q?font face="Times New Roman, serif">有数据,从而l作向前或向后的操作Q只有在Ud受阻后,才修Ҏ否到边界的标讎ͼq样或许在移动操作中可能会对Ud的性能有一定的帮助?/p>

个h认ؓQ这里把isFisrt()看作是对当前记录的操作时候“越界”的?font face="Times New Roman, serif">志更为合适?/p>

IsLastQ?/p>

官方的解释:

isLast表示Dataset已经在试囄l向后移动当前记录的工程p|Q亦?font face="Times New Roman, serif">?font face="Times New Roman, serif">dataset试图l箋向前Ud当前记录后,isFirst才会变ؓtrueQ此?font face="Times New Roman, serif"> Dataset的当前记录仍然是倒数W一条记录?/p>

我的理解Q?/p>

可以ҎisFirst来理解,我觉得我已经解释的比较清楚了?/p>



  1. moveFirst ?moveLastҎ

    当用戯用了Dataset?font face="Times New Roman, serif">moveFirst?font face="Times New Roman, serif">moveLast之后Q?font face="Times New Roman, serif">Dataset?font face="Times New Roman, serif">isFirst?font face="Times New Roman, serif">isLast立刻被置?font face="Times New Roman, serif">true?/p>

    ?font face="Times New Roman, serif">dataset没有M可见记录的时候,isFirst?font face="Times New Roman, serif">isLast同时ؓtrueQƈ且当前记录ؓnull?/p>

    惛_在前面理解了我对isFirst?font face="Times New Roman, serif">isLast的讲解之后,对这两个Ҏ的理解应该不会出C么偏差了?/p>

         不过我想提醒大家一下,注意我这里的用词Q是“可见记录?/font>Q即是说Q如果在客户端删除了所有的记录Q虽然没有向服务器提交,
         但此?font face="Times New Roman, serif">isFirst
?font face="Times New Roman, serif">isLast都会同时q回true。这里就很好的统一了对用户的“体验一致性”,即用戯为已l没有数据了?/p>



  1. 不知道大家有没有在浏览器中查看过Dorado生成?font face="Times New Roman, serif">jsp文g的源代码Q其实这些源代码都是通过html?font face="Times New Roman, serif">xml界面模板信息共同展现的?/p>



  1. Dorado内部加蝲序Q?/p>

        W一步: 客户端发?/p>

                              W二步:初始?视图模型

                              W三步:初始?Dataset

                              W四步:初始?lg

                              W五步:完成lg?font face="Times New Roman, serif">Dataset之间的绑?/p>

                              W六步: Dataset向外部请求数据,完成数据加蝲

                              W七步:向客Lq回HTML/XML界面模板信息

                              W八步:完成Q显C页?/p>


  1. Dataset中最重要的方法: flushData()

         功能我想我不说大家也知道Q就是通过不刷新页面来实现数据更新与交换?br />

未完待箋。。?img height="19" src="http://www.aygfsteel.com/Emoticons/regular_smile.gif" width="19" border="0" />



Nic Sense Zone 2007-01-01 08:08 发表评论
]]>
Dorado on the Road - 1http://www.aygfsteel.com/nicholas-sjy/articles/Dorado.htmlNic Sense ZoneNic Sense ZoneSun, 31 Dec 2006 19:29:00 GMThttp://www.aygfsteel.com/nicholas-sjy/articles/Dorado.htmlhttp://www.aygfsteel.com/nicholas-sjy/comments/91260.htmlhttp://www.aygfsteel.com/nicholas-sjy/articles/Dorado.html#Feedback0http://www.aygfsteel.com/nicholas-sjy/comments/commentRss/91260.htmlhttp://www.aygfsteel.com/nicholas-sjy/services/trackbacks/91260.htmlDorado on the way


2006q?font face="Times New Roman, serif">12?font face="Times New Roman, serif">25?/p>


今天是圣诞节Q进入公司已l四个月了,可是对公司的产品Doradoq几乎是一个门外汉Q?font face="Times New Roman, serif">(我要说明一下,不是我太W,刚刚q入公司接受了一个传l项目的开发,再加之学校的事情Q在此我x应该声明一点,我还是一个大四的学生Q快l束大学四年的学习了Q到最后,׃八糟的事情实在是太多了,q个报告那个报告的?font face="Times New Roman, serif">)

Thomas(我们公司的品经?font face="Times New Roman, serif">)Q还有范l理Q实在是不好意思,q有公司的同事,虽然我比他们中的好多入公叔R早,可惜我不是最厉害的,臛_现在不是?/p>

C个星期ؓ止,学校的事情基本上已经完了Q毕业设计的N也选了Q选的N是《基于智?font face="Times New Roman, serif">Agent的分布式Ud计算处理》,本来一开始自作聪明,以ؓ题目为“移动计”嘛Q就是移动设备的计算处理Q智?font face="Times New Roman, serif">Agent嘛~估计是一UŞ式而已Q我自从从大学二q自学Java开始,接触?font face="Times New Roman, serif">Java中的JavaSE?font face="Times New Roman, serif">JavaEE两个体系Q正好可以借此NQ让我对JavaME有所了解Q也实现了完成毕业设计的作用。结果后来导师选好了以后,看着导师l的材料Q我才知道,我陷入惔潭了?font face="Times New Roman, serif">(导师Q原谅我q么_呵呵·)

今天是我真正学习Dorado的第一天,公司l了我一些资料,所以我信心十Q我要赶上公司的其他同事Q呵呵~争取过他们哦~已经习惯了要做到最好,我是不是太自大了Q?

q是跟我学习Java一P首先在公司的官方|站(http://www.bstek.com/)下蝲?font face="Times New Roman, serif">Dorado的最q版本,我下载的版本?font face="Times New Roman, serif">Dorado-5.0 061129.1132Q一q还下蝲?font face="Times New Roman, serif">Dorado 5 快速入门,lg使用技巧,当然q有Dorado?font face="Times New Roman, serif">APIQ-我的最爱?/p>

首先看了Benny(我们公司?font face="Times New Roman, serif">CTO)录制的两D视频说明,依照Dorado安装自带?font face="Times New Roman, serif">doradosampleQ把dorado的大致功能作了一个讲解说明,个h感觉doradoq是挺有市场前景的,只是需要更大的宣传?/p>

好了Q闲话不多说了,开始我?font face="Times New Roman, serif">Dorado之旅吧~


首先Q需要了解的是:视图模型Dorado开发当中非帔R要的对象Q它装?font face="Times New Roman, serif">Dorado的界面逻辑和操作逻辑Q即主要包含什么数?font face="Times New Roman, serif">dataset Q以及这些数据通过什么Ş式来展现?/p>

下面是我今天学习中,觉得需要注意的一些地方和术语?/p>


  • Dataset

    1. getDataset(“datasetName? ; 获取?font face="Times New Roman, serif">dataset的引?/p>

    2. RecordIterator ri = dataset.recordIterator() ; 获取?font face="Times New Roman, serif">dataset的P代器引用?/p>

    3. ?font face="Times New Roman, serif">dataset的遍?br />


      1while(ri.hasNext()){
      2Record record = ri.nextRecord() ;
      3// Ҏ条记录的操作
      4}

      5
      6

      4. 可是通过getControl(“controlName? ; 获取lg的引?/p>

      注意Q这里得到的?font face="Times New Roman, serif">Control对象Q需要进行类型的强制转换?/font>

    5. ”Module数据坞”的说明?/p>

      1). 数据坞里面的dataset对象可以被不同的视频模型索引用,以达到数据共享的作用?/p>

                    2). Module不应该包含Q何的业务逻辑Q这是一U良好的设计模式?/p>

                    3). Module的创建和销毁由Dorado提供的容器来理Q可以当做一?font face="Times New Roman, serif">Singleton来用?/p>

                         所以在l大部分情况下,?font face="Times New Roman, serif">Module里面d非静态的属性都不是正确 (或者是不太明智)的做法?/p>

                     4). Module中的dataset的创建和销毁?font face="Times New Roman, serif">dorado提供的容器来理的,但开发h员可以强刉过scope?font face="Times New Roman, serif">timeout来定?font face="Times New Roman, serif">dataset?br />                          生命周期?/p>

                     5). scope有三U取|分别?font face="Times New Roman, serif">request (默认)Q?font face="Times New Roman, serif">session Q?application?/p>

                           需要特别注意的是,在同一?font face="Times New Roman, serif">request?font color="#800000">q箋以不?/font>?font face="Times New Roman, serif">pageIndex Q?font face="Times New Roman, serif">pageSize Q?font face="Times New Roman, serif"> parameters的不同组合来获取Module中的datasetQ但获?font color="#800000">多个不同?/font>dataset 实例?/p>

                     6). 如果Z提高效率而将scope讄?font face="Times New Roman, serif">application Q则应该注意让此dataset中的数据量不要过大。常用在大型pȝ中的代码表?/p>

6. 通过dataSet.getCurrent() ; ҎQ可以从dataSet获取当前记录。由?font face="Times New Roman, serif">dataSeth

?/font>当前记录”这个,所以大多数操作都是对“当前数据”来说的?/p>

  • Mapping

    1. 所有的Mapping单元都是通过名ؓglobal的管理单元来q行理的?/p>

            2. 在请求映的q程中,dorado有着自己独特的,不同?font face="Times New Roman, serif">Struts的映机Ӟ

                  例如Q对于请求:action=”access.login.d?/font>

access 与对应的controller的名UC_

?font face="Times New Roman, serif">login与对应的action的名UC致?/p>

3. controller?/span>clazz属性所表示的是用于处理q个h?/span>class Q类gStruts中的 Action Q而提交的数据Q就?/span>Struts 中的ActionFrom转换成了Dorado?/span>dataset.

4. 对于面的访问安全控?font face="Times New Roman, serif">(卛_能通过dorado式的hQ而不容许以文件结构\?font face="Times New Roman, serif">来访问,?font face="Times New Roman, serif">../demo/XX.jsp)Q可以将view中的safe属性设|ؓtrue来控制?/p>

或者通过dorado默认?font face="Times New Roman, serif">setting中的security.accessChecher来控制。不q我可以自主创徏一?font face="Times New Roman, serif">AccessCheckercd?font face="Times New Roman, serif">javacLq行控制。但需要将setting.xml里面?font face="Times New Roman, serif"> “security.accessChecker?/font>属性修改ؓ自己创徏的类路径?/p>

5. 可以通过DoradoContext来访?font face="Times New Roman, serif">dorado的上下文信息Qƈ通过标记量来告诉dorado 的上下文从哪里获取需要的变量?/p>

例如Q?/p>

Object obj = doradoContext.getAttribute(DoradoContext.SESSION,”username? ;


  • i18n

    1. 你需要在i18n目录下新Z?font face="Times New Roman, serif">I18N?font face="Times New Roman, serif">propertiescd文g。此cL件与java中的

    一_都是以键Q值对的Ş式存在?/p>

    2. ?font face="Times New Roman, serif">dataset中的Fields里面讄?font face="Times New Roman, serif">${Resource.fileName.key}的Ş式进行设|。这个就

    有点cM?font face="Times New Roman, serif">JSP2.0中的ELQ其中,fileName是资源文件的文g_不包?font face="Times New Roman, serif">_cn_ZH

    {类似的字样。?font face="Times New Roman, serif">key是在文g中的键。这些都是在pȝ?font face="Times New Roman, serif">setting.xml中的

    ?font face="Times New Roman, serif">common.locale.language?/font>和?font face="Times New Roman, serif">common.locale.country ?/font>来进行的配置。同P你可

    以通过修改q两个属性来启用不同?font face="Times New Roman, serif">I18N文g?/p>

3. 对于动态更改用L国际化资源的情况Q可以?font face="Times New Roman, serif">

LocalHelper.getLocale(“language?”country?,

ResourceManager.getInstance().setDefaultLocale(context,

DoradoContext.SESSION,

locale) ; 来设|?

  • EL

    ?font face="Times New Roman, serif">JSP2.0斚w的书c中有大量的l典介绍Q这里就不再记录?/p>

    开发时Q只需CDorado内置的隐式变量,卛_?/p>

  • Skin

    1. 皮肤文g夹存攄位置是在skins文g夹下面的?/p>

    在用新皮肤Ӟ只需要修?font face="Times New Roman, serif">setting.xml中的view.smartweb2.skin对应的值即可?/p>

    2. 同时可以通过修改skin.css文g来修?font face="Times New Roman, serif">dorado中的标签库的所有展C风根{?/p>

    3. 同时也支持传l的JSP开发,卛_<head>标签中设|相信的各种属性,以完成让

    dorado以用戯定义的Ş式进行展现?br />



Nic Sense Zone 2007-01-01 03:29 发表评论
]]>
վ֩ģ壺 ǰ| | ɽ| ½| Ӱ| Ұ| ӽ| | | | | ƺ| ͷ| غ| | ľ| ͼ| | | Զ| ʯ| | Ϲ| | | | ʡ| | | | ˮ| ָ| | ɽ| | | | ʲ| | | |