`
haiyupeter
  • 浏览: 427629 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

OperaMasks 的 delegate机制(Tree,Grid 二次取数)

JSF 
阅读更多

OperaMasks 二次取数

        OperaMasks的二次取数过程在TreeDelegate类中进行,其中最经典的一个是查看是否有TreeDataProvider,若存在,则直接将UITree下的所有的子节点删除,这也是动态树与静态树最大的区别了,动态树的全部数据从TreeDataProvider来,而静态树则从组件树来。

        如果使用的是动态树,那么直接取得UITree并取得其下的子节点的时候,再对其子节点进行操作,那些这些操作是无法反应到一个Tree上的,因为那些节点将被删除。此时操作的是应该是TreeDataProvider中的数据。

    1.为什么需要二次取数呢?

    因为树Tree,表格DataGrid等组件,需要进行部分数据的更新,如,点击树结点,展开其节点;点击表格的上一页,下一页,都需要进行数据的更新,而这个过程是不需要更新其他表单控件域,大部份情况下。所以造就了二次取数机制的产生。虽然严格上说该处理有违了JSF的生命周期概念,但确实也是一个非常好用的机制。虽然在跨请求方面,需要做一定的完善,但总的还是不错,如果能做到在展开,或者在翻页的时候也做一些事情就好了。

    2.OperaMasks二次取数是如何进行的呢?

    首先了解一下生命周期跳跃的发问:查看到LifeCycle中的execute(FacesContext context)方法,调用了phase.skipPhase(context),这个方法很关键,若为context.getResponseComplete() || context.getRenderResponse(),则跳过2-5周期,就像平时我们使用校验器,或者说是转器等出现异常时,我们都会设置一个context.responseComplete()或者是context.renderResponse(),其中renderResponse()是要开始进行渲染响应了,已经到了这个时机的意思,而responseComplete()指要响应已经完成了,例如页面跳转等,则不需要进行渲染了。

    好了,有了这个跳跃条件,Delegate是如何跳过这些不必要的周期的?先看生命周期的第一周期:RestoreView的execute()方法,查看到:

if (!FacesUtils.isPostback(context)) {
            String viewId = getAssociate(context).getViewId(context);
            if (viewId == null) {
                throw new FacesException("Cannot obtain request view ID");
            }
            view = viewHandler.createView(context, viewId);
            context.setViewRoot(view);
            context.renderResponse();
            return;
        }

 FacesUtils.isPostback(context)进行了判断了。

 

查看各个二次取数的链接是如何设置的

        3.Tree的 value是如何与dataprovider绑定到一起的呢,默认会根据类型直接绑定?那么这个默认是在哪里执行的呢。是否是所有的组件,默认都是以value为绑定的呢?

分享到:
评论

相关推荐

    operamasks整合spring、hibernate实现grid增删改查

    在IT行业中,Web开发是一项核心任务,而"operamasks整合spring、hibernate实现grid增删改查"是常见的Web应用开发实践。这个主题涵盖了多个关键的技术组件,包括OperaMasks、Spring框架和Hibernate持久化层,以及Grid...

    operamasks2.1整合spring、hebernate实现grid增删改查

    标题“operamasks2.1整合spring、hebernate实现grid增删改查”涉及到的是一个Web开发项目,其中使用了OperaMasks 2.1、Spring和Hibernate三大技术框架来构建一个具备数据操作功能(CRUD:创建、读取、更新、删除)的...

    扩展OperamasksUI的grid的排序和显示detail属性

    1. 分析Operamasks UI的grid组件源码,理解其内部工作原理和事件处理机制。 2. 找到与排序和详细信息显示相关的函数或方法,可能包括排序算法和数据绑定逻辑。 3. 如果现有代码未提供所需功能,需要编写新的...

    Apusic OperaMasks-jsfdemo

    Apusic OperaMasks很全的JSF的例子,什么都有,如:TREE 、GRID、FORM、BOX、MENU、DIALOG、AJAX。都很漂亮的。

    operamasks-ui 帮助文档

    只是我在网上找的 operamasks-ui api 文档 , 希望对你们有帮助

    operamasks整合spring、jpa(hibernate)测试grid

    标题中的“operamasks整合spring、jpa(hibernate)测试grid”表明这是一个关于将OperaMasks(一个前端框架)与Spring(一个后端框架)以及JPA(Java Persistence API,Java持久化API)结合使用的教程,其中JPA的...

    operamasks官方jsf教程

    **OperaMasks** 是一个专为Opera浏览器设计的JSF组件库,它扩展了JSF的功能,使得在Opera中使用JSF应用更加顺畅。 **教程概述:** "operamasks官方jsf教程"是针对初学者的一个资源,旨在介绍如何使用JSF和...

    operamasks-ui-2.0-doc

    "Operamasks UI 2.0 Doc"是一个针对 Operamasks 用户界面的开发文档,它提供了详尽的指导和信息,帮助开发者理解和构建基于Operamasks的Web应用程序。这个离线版文档对于开发者来说尤其珍贵,因为在线寻找这类资源...

    operaMasks_studio应用手册

    #### 二、operaMasks_studio的主要功能与特点 1. **集成开发环境(IDE)支持**:operaMasks_studio作为一款专门针对JSF的开发工具,它能够很好地与主流的IDE(如Eclipse、IntelliJ IDEA等)集成,为用户提供一个...

    operamasks-sdk_3.2

    **Operamasks SDK 3.2:金蝶中间件的创新解决方案** Operamasks SDK 3.2 是金蝶中间件公司推出的一款重要的软件开发工具包,专为开发者设计,旨在简化与金蝶产品集成的过程,提高开发效率,并增强应用程序的功能。...

    operamasks安装包

    .options.jar文件可能包含了这些配置项的保存和读取机制,允许用户根据个人喜好定制OperaMasks的使用体验。 4. **operamasks-api.jar**:这个文件是OperaMasks对外提供的API接口集合。开发者可能通过这个接口让其他...

    operamasks-ui-2.1-demo

    "Operamasks UI 2.1 Demo"是一个专注于前端用户界面的项目,主要基于流行的开源浏览器扩展框架——OperaMasks。这个项目的目的是提供一个演示版本,让用户和开发者能够体验和理解OperaMasks UI 2.1版本的功能和设计...

    OperaMasks查询、模糊查询、源码

    【标题】"OperaMasks查询、模糊查询、源码"涉及的是一个基于OperaMasks前端框架和后端servlet+bean技术实现的查询系统。在这个Demo中,开发者展示了如何运用这些技术来创建一个具备模糊查询功能的应用。让我们深入...

    operamasks-ui

    总的来说,"Operamasks-UI"是Opera浏览器的一个增强型用户界面插件,它的源代码公开并可供开发者进行二次开发。通过理解和学习这个项目,不仅可以提升对浏览器插件开发的理解,也能掌握前端开发中的CSS、JavaScript...

    operamasks-faces_1.0

    "Operamasks-faces_1.0" 是一个与Opera浏览器相关的扩展或资源包,它主要专注于面部识别或个性化功能。这个压缩包可能是为Opera浏览器设计的一系列面具或表情符号,让用户在浏览网页时能够使用各种有趣的脸部形象...

    operamasks-ui_demo

    operamasks-ui的demo程序,能够直接部署,运行。查看om-ui上优秀的标签。

    OperaMasks快速进阶

    【OperaMasks快速进阶】文档详尽地介绍了OperaMasks这一开源Java框架,它由金蝶中间件公司的Apusic捐赠初始代码,并在OperaMasks.org开源社区不断成熟。OperaMasks是一个Web2.0框架,它以IoVC(Inversion of View-...

    operamasks-ui-2.0.zip

    《深入理解OperaMasks UI 2.0:前端框架与应用实践》 OperaMasks UI 2.0是一款由金蝶公司推出的高效、易用的前端界面库,它旨在为开发者提供一套完整的用户界面解决方案,以提升Web应用程序的用户体验和开发效率。...

Global site tag (gtag.js) - Google Analytics