经过一段时间的实践,以及后台组的帮助。
最终确定的数据协议是用 Map,输入参数,及返回结果都是 Map
返回结果
Map
- headers:HeaderModel[dataField:String, headerText:String, visible:Boolean...]
- data:List<Map<String, Object>>
- totalPage:long
- currentPage:long
而上述的结果通过统一的过滤层处理,把原始的数据根据配置文件,处理成前台界面需要显示数据格式。配置示例如下:
<ItemsFilters>
<ItemsFilter name="contactFilter">
<item name="type" dispname="类型" width="80">
<dict senddict="true">
<item key="1" value="类型1" />
<item key="2" value="类型2" />
<item key="3" value="类型3" />
<item key="4" value="类型4" />
</dict>
</ItemsFilter>
<ItemsFilters>
而在最终的Flex服务类中, 过滤原始数据,也就是加上必要的 Headers 还有就是将 字典的数据翻译成对应的中文。
public Map<String, ?> queryContacts(Map<String, Object> params){
Map result = contactsDelegate.find(params);
Map map = new HashMap();
map.put("data", result.get("DATA"));
Map m = filterData("contactFilter", map);
m.put("totalPage", result.get("TOTAL_PAGE"));
return m;
}
Flex端,通过可配置的通用的查询界面(配置进去服务,方法名,查询参数的keys,),
界面结构
<bj:TitledBorderBox width="100%"
cornerRadius="5"
title="查询条件"
height="50"
top="5"
left="5"
right="5"
horizontalScrollPolicy="off"
verticalScrollPolicy="off"
styleName="sheetPanelStyle">
<c:QueryConditionBar id="queryCondition"
typeEnabled="{_typeEnabled}"
phoneNumberLabel="{phoneNumberLabel}"
phoneNumberRequired="{_phoneNumberRequired}"
typeDataProvider="{typeDataProvider}"
searchButtonClick="doSearch(event)"
width="100%"
height="100%"/>
</bj:TitledBorderBox>
<bj:TitledBorderBox title="查询结果"
cornerRadius="5"
width="100%"
layout="vertical"
height="100%"
top="55"
left="5"
right="5"
bottom="5"
styleName="sheetPanelStyle">
<c:Pager id="pager"
displayTitle=""
width="100%"
height="18"
pageChanged="onPageChanged(event)"/>
<mx:DataGrid id="resultDataGrid" doubleClickEnabled="true" itemDoubleClick="showItemDetails(event)"
width="100%"
height="100%">
</mx:DataGrid>
</bj:TitledBorderBox>
配置文件(上一篇文章那个仿Windows的UI框架的配置文件)
<menuItem key="302" label="联系人查询" icon="rttSearchIcon" clazz="com.nealmi.views.Query"
parameters="serviceName=contactService;methodName=find;startTimeKey=dateTimeStart;endTimeKey=dateTimeEnd;pageNumberKey=currentPage;pageSizeKey=pageSize;..." />
所有这些,最终的效果不过是一个简单的 查询 - 结果列表 界面。
而一旦这一个界面Okay了,其他类似的界面不过是修改配置文件而已。我们已经通过时间证明前期花费的时间和精力是值得的。
唯一的一个问题就是,查询条件的生成,我一直没有找到足够简单的解决方法。
通过一系列的小工具(服务器的ItemFilter工具,通用的界面(QueryCondition,Pager,ServiceUtils))最终我们完成一个可以应对变化的界面。
- 大小: 7.1 KB
分享到:
相关推荐
"Android小项目开发示例大全--20个通用具体应用程序实例源码"提供了丰富的学习资源,帮助开发者深入理解Android应用开发的各个环节。这个压缩包包含了20个实际项目的源代码,覆盖了Android开发的多个关键知识点。 1...
**Go-FBender:通用网络协议的负载测试命令行工具** Go-FBender是一个由Go语言编写的高效、轻量级的命令行工具,专门设计用于执行通用网络协议的负载测试。它允许用户对各种网络服务进行压力测试,评估其在高并发...
【中国象棋通用引擎与通用界面程序简介】 中国象棋通用引擎协议(UCCI)是专为连接中国象棋界面程序和象棋引擎而设计的一种通信协议,它由上海格尔软件的技术人员在2004年制定,借鉴了国际象棋的UCI协议。UCCI协议...
- **功能**: LabVIEW Embedded Module for ARM Microcontrollers是National Instruments为支持基于ARM微控制器的嵌入式系统开发而设计的一款软件工具。 - **特点**: 提供图形化编程环境,支持直接生成可执行代码,并...
开发微信小程序需要安装微信开发者工具,它提供了编写、调试、预览和发布小程序的一站式服务。开发语言主要是基于JavaScript的WXML(微信小程序标记语言)和WXSS(微信小程序样式语言),以及基于JSON的配置文件app....
在压缩包文件中,`license.txt`很可能是工具的许可协议,详细说明了使用该工具的法律条款和限制。了解并遵守许可证条款对于避免法律问题至关重要。 而`Coverage`可能是一个包含覆盖率数据的MATLAB数据文件,或者是...
软件系统通用开发平台是一个创新的解决方案,它融合了C/S架构的性能优势和B/S架构的便捷性,为企业提供了一站式的业务系统构建工具。通过该平台,企业可以快速搭建个性化、可扩展的业务系统,无需大量编写代码,降低...
这样的工具在网站开发、数据分析、网页结构分析等领域有广泛应用。 【描述】"可以爬取网页的源码包括各种文件"揭示了该工具的强大功能,不仅限于抓取HTML源代码,还能处理与网页相关的多种文件类型。这表明它可能...
【标题】"weinre-jarwap网站开发工具"是一个专为WAP(无线应用协议)网站开发者设计的辅助工具,旨在帮助他们在使用jQuery Mobile框架进行网页开发时更方便地查看和调试页面源代码。jQuery Mobile是一种轻量级、响应...
【通用型的管理系统登录界面】是许多IT项目中不可或缺的一部分,尤其在后台管理系统的设计与开发中,一个良好的登录界面能够提升用户体验,同时也能为开发者节省大量时间。这种类型的界面设计通常具备以下关键知识点...
2. 用户界面(UI):MATLAB的GUIDE工具或者Modern UI组件库可以创建图形用户界面,让玩家可以交互地操作拼图。 3. 动画与动态更新:通过定时器对象和`drawnow`函数实现游戏过程中的动画效果,如拼图块的旋转动作。 ...
修改扩展界面支持库一,添加“工具条.置标题()”方法。 13. 修改高级表格支持库在表格空白处(所有单元格之外)单击鼠标导致当前光标处单元格自动进入编辑状态的BUG。 14. 修改扩展界面支持库一,为“超级列表框...
的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...
在MATLAB中进行游戏开发可能并不常见,但MATLAB的强大计算能力和丰富的图形界面设计工具使得它也能用于创建一些复杂的交互式应用,包括游戏。这里提到的"Am"可能是指一个特定的游戏开发模块或框架,专注于音频管理...
- 实现拉动式用户界面,改善用户体验。 - **如何查询当前业务流程** - 提供查询当前业务流程的方法。 - **转单开发步骤** - 介绍转单开发的具体步骤。 - **上下游接口对应关系查询** - 查询上下游接口的对应关系...
6. **界面设计**:UI设计是小程序的重要组成部分,使用WXML和WXSS可以创建动态和响应式的用户界面。开发者需要熟悉这两种语言的语法,以及微信小程序提供的组件库,如按钮、列表、图片、表单等。 7. **网络请求**:...
"包括图形用户界面"意味着这个项目不仅有后台的算法实现,还有面向用户的交互式界面。用户可以通过图形界面输入参数,预览和调整分割结果,使得非专业用户也能方便地使用这个工具。 从标签“硬件接口和物联网”来看...
"通用Java开发类库"通常指的是那些广泛适用、可复用性强的基础工具类库,可以应用于各种类型的Java项目中。在Java世界里,这些类库通常包含了数据结构、算法、I/O操作、网络通信、线程管理等多个领域的功能。 以"dc...
横河电机株式会社开发的通用设备管理工具FieldMate是针对工业自动化领域的解决方案,旨在通过优化设备管理流程来提高生产效率和设备使用效率。FieldMate能够支持多种协议和设备,是横河电机VigilantPlant解决方案...