`
SimonLei
  • 浏览: 175960 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SmartGWT 之 逻辑删除以及展示

阅读更多

逻辑删除而不是物理删除,是很常见的需求。我这里是因为要用到 syncml,

所以删掉的联系人也不能真正删除,只能做标记。于是增加一个 status 字段,

如果是 "D"的话,就表示删除。

 

对于 SmartGWTEE 来说,只要在 datasource 里面定义好了,增删改查

都不用我做。那么,如何用最简单的办法做一个逻辑上的删除?

 

首先,肯定要自己自定义一个服务端的 DataSource。在 ds.xml 文件当中,

增加这个类的定义:

 

<DataSource
    ID="contactPerson"
    serverType="hibernate"
    beanClassName="org.simon.pim8.server.contact.ContactPerson"
    serverConstructor="org.simon.pim8.server.contact.ContactPersonDataSource"
>

 这里的 serverConstructor 就是自定义的DataSource。

 

接下来这个DataSource要做的事情,就是从HibernateDataSource 当中继承下来,做一些调整就OK了。

public class ContactPersonDataSource extends HibernateDataSource {
    @Override
    public DSResponse execute(DSRequest req) throws Exception {
        String operationType = req.getOperationType();
        Map values = req.getValues();
        if ( isUpdate( operationType)) {
            values.put( "status", "U");
        } else if ( isAdd( operationType)) {
            values.put( "status", "N");
        } else if ( isRemove( operationType)) {
            // 不做真实的删除
            values.put( "status", "D");
            final Session session = sessionFactory.openSession();
            final ContactPerson person = (ContactPerson) session.get( ContactPerson.class, (Serializable) values.get( "id"));
            person.setStatus( "D");
            final Transaction txn = session.beginTransaction();
            session.update( person);
            txn.commit();
            session.close();
            return new DSResponse();
        } else if ( isFetch( operationType)) {
            Map newCriteria = new HashMap();
            newCriteria.put( "_constructor", "AdvancedCriteria");
            newCriteria.put( "operator", "and");
            List criterias = new ArrayList();
            Map notDelete = new HashMap();
            notDelete.put( "fieldName", "status");
            notDelete.put( "operator", "notEqual");
            notDelete.put( "value", "D");
            criterias.add( notDelete);
            if ( isAdvancedCriteria( req.getCriteria())) {
                criterias.add( req.getCriteria());
            } 
            newCriteria.put( "criteria", criterias);
            req.setCriteria( newCriteria);
        }
        return super.execute( req);
    }
}

 

这里,除了删除之外,实际上的工作都由父类完成,我只是做一些设置,改变父类的行为。

 

增加和新增不用多说。删除的话,设置状态,然后手工更新,就可以直接退出了。

本来想把 operationType设置为 update的。后来想还是算了,简单点好。

 

查询是最有意思的。因为要增加一个不等于"D"的criteria,所以只能按照 SmartGWTEE的

AdvancedCriteria格式,来做这样一个动作。

 

另外,提醒一下,status这个字段,也要添加到 ds.xml 文件当中,否则在过滤时,不会起作用的。

 

1
1
分享到:
评论

相关推荐

    smartgwt官方实例

    SmartGWT是一个强大的Java框架,用于构建富互联网应用程序(RIA)。这个官方实例是学习和理解SmartGWT功能和用法的宝贵资源,尤其适合自学者。"Showcase"通常指的是一个展示各种组件、特性和功能的集合,让我们深入...

    SmartGwt学习文档

    SmartGwt是一款强大的Java库,专门用于构建富互联网应用程序(RIA,Rich Internet Applications)。它基于Google的GWT(Google Web Toolkit)框架,并扩展了其功能,提供了丰富的UI组件和更高级的客户端性能优化。...

    SmartGWT2.0 API

    首先,SmartGWT的核心特性之一是其丰富的组件集。这些组件包括但不限于表格、树、表单、面板、图表以及各种自定义小部件。它们都经过精心设计,具有丰富的样式和配置选项,可以轻松满足多种设计需求。例如,`...

    smartgwt-1.3

    SmartGWT是一个强大的Java库,专门用于构建富互联网应用程序(RIA)。这个名为"smartgwt-1.3"的压缩包文件很可能包含了SmartGWT框架的1.3版本的源代码、库文件和其他相关资源。SmartGWT是基于Google Web Toolkit ...

    smartGWT 3.1 最新版本

    在本篇文章中,我们将深入探讨SmartGWT 3.1的关键特性、API使用、源码解析以及Sample示例。 1. **SmartGWT框架概述** SmartGWT是一个基于Google Web Toolkit (GWT) 的扩展框架,它通过提供大量预定义的用户界面...

    基于Maven的SmartGWT项目示例

    2. src/main/java:源代码目录,包含用Java编写的业务逻辑和SmartGWT的客户端代码。 3. src/main/resources:资源文件夹,可能包含一些静态资源,如图片、样式表或本地化文件。 4. src/main/webapp:Web应用目录,...

    smartGWT开发环境搭建(完整工程)

    SmartGWT的组件使用XML布局定义,配合Java后台逻辑,可以实现复杂的交互和数据展示。例如,你可以创建一个`ListGrid`组件来显示数据,使用`FormItem`来收集用户输入,通过`Button`触发事件处理。 为了运行和测试...

    smartGWT最新zip

    SmartGWT的一大亮点是它的Showcase演示,这是一个包含大量预构建示例的项目,展示了各种UI组件的用法和效果。开发者可以通过这些示例学习如何使用SmartGWT的各种组件,如表格、树形视图、图表、表单等,以及如何进行...

    SmartGWT 12.0

    SmartGWT库的核心在于它将Google Web Toolkit (GWT) 的优势与智能组件模型相结合,为开发者提供了丰富的UI组件、强大的数据管理工具以及高效的异步通信机制。 1. **SmartGWT 框架** SmartGWT 是基于GWT的扩展,它...

    smartgwt2.4 最新发布

    SmartGWT 2.4 是一个强大的开源框架,主要用于构建企业级的富互联网应用程序(Rich Internet Applications,简称RIA)。这个框架基于Google Web Toolkit (GWT) 并且扩展了其功能,提供了丰富的组件库和高级特性,...

    smartGwt学习笔记

    这个解决方案的核心在于理解SmartGWT的事件处理机制和组件内部的工作原理,以及如何通过JavaScript Native Interface(JNI)来直接操作底层的JavaScript对象。这种方法虽然能够解决问题,但可能会影响到SmartGWT的...

    smartgwt + spring + hibernate

    在这个项目中,Spring可能被用来管理SmartGWT和Hibernate的生命周期,以及处理HTTP请求和业务逻辑。 Hibernate作为ORM框架,负责将Java对象映射到数据库表。它简化了数据库操作,使得开发者可以像操作普通Java对象...

    smartGWT

    "SmartGWT"是一个强大的Java库,用于构建企业级的Web应用程序。它基于Google Web Toolkit (GWT) 并提供了一系列高级组件和功能,旨在简化开发过程,提高开发效率。SmartGWT尤其适合那些需要创建数据密集型、交互性强...

    SmartGwt 之原生 Desktop(与gxt无关)

    这篇内容将深入探讨 SmartGwt 的原生 Desktop 实现,以及如何利用这一特性来提升 Web 应用的用户体验。 首先,我们理解 SmartGwt 的 Desktop 特性。Desktop 提供了一种布局方式,它模仿了传统桌面应用程序的界面...

    SmartGWT 入门 SmartGWT 入门

    ### SmartGWT 入门详解 #### 一、SmartGWT 概述 **SmartGWT** 是一款基于 **Google Web Toolkit (GWT)** 的高级Web应用开发框架,旨在简化企业级Web 2.0应用的开发过程。自从 **GWT** 发布以来,它吸引了大量的...

    smart GWT 3.1

    SmartGWT 是封装了 SmartClient 的 GWT API。SmartGWT 有如下特色: 丰富的控件。很多较为复杂的常用界面都被包装成简单易用的控件。比如可 编辑的树形表格、查询常用的过滤器创建器和类似 Google Calendar 的日历...

    smartgwt5.0

    SmartGWT 是封装了 SmartClient 的 GWT API。而 SmartClient 是一个开源的企业级 Ajax 开发框架。 Google Web Toolkit 的发布,大大降低了 Java 开发人员进行 Web 开发的门槛。然而 GWT 本身提供的控件及功能相对...

    SmartGWT 快速开发文档(Quick Start Guide)

    ### SmartGWT 快速开发文档 (Quick Start Guide) 关键知识点详解 #### 一、文档概述 **SmartGWT** 是一款强大的基于 Java 的 Web 应用前端框架,它支持构建高性能的企业级应用程序。本快速开发文档为 SmartGwtEE ...

    smartgwt 培训ppt

    有关于smartgwt 开发的ppt,高级开发的应用。

    smartgwt最新版本GWT的DEMO

    1. **组件使用**:SmartGWT中的组件如Grid(表格)、Form(表单)、Tree(树形结构)、Dialog(对话框)等,都有详细的示例展示。开发者可以通过这些例子了解如何创建、配置和操作这些组件。 2. **数据绑定**:...

Global site tag (gtag.js) - Google Analytics