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

小工具式的开发 - 数据协议,通用界面

    博客分类:
  • Flex
阅读更多
经过一段时间的实践,以及后台组的帮助。

最终确定的数据协议是用 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
1
0
分享到:
评论

相关推荐

    易语言程序免安装版下载

    修改扩展界面支持库一,添加“工具条.置标题()”方法。 13. 修改高级表格支持库在表格空白处(所有单元格之外)单击鼠标导致当前光标处单元格自动进入编辑状态的BUG。 14. 修改扩展界面支持库一,为“超级列表框...

    新版Android开发教程.rar

    的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...

    vc++ 开发实例源码包

    ----------VC应用开发 [Visual.C..编程技巧精选500例]源代码. 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件...

    Android高级编程--源代码

    由于现有的手机应用程序的开发是构建在各手机厂家的私有操作系统之上的,所以它限制了第三方应用程序的开发,而Android为我们提供了一个开放和通用的选择。因为没有了人为制造的障碍,所以Android开发人员可以自由地...

    jvm-sandbox-repeater:基于JVM-Sandbox的Java服务器端记录和回放解决方案

    是生态体系下的重要模块,它具备了JVM-Sandbox的所有特点,插件式设计便于快速适配各种中间件,封装请求录制/回放基础协议,也提供了通用可扩展的各种丰富API。 目标人群 - 面向测试开发工程师 线上有个用户请求一直...

    asp.net知识库

    帮助解决网页和JS文件中的中文编码问题的小工具 慎用const关键字 装箱,拆箱以及反射 动态调用对象的属性和方法——性能和灵活性兼备的方法 消除由try/catch语句带来的warning 微软的应试题完整版(附答案) 一个...

    java开源包3

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    Java开发技术大全 电子版

    14.2开发工具Eclipse简介438 14.2.1Eclipse的安装与配置438 14.2.2用Eclipse创建一个项目440 14.3AWT组件简介444 14.3.1AWT组件的层次结构445 14.3.2AWT中的基本组件和子包446 14.3.3AWT组件通用属性与方法448...

    Delphi开发范例宝典目录

    实例079 利用TStringGrid实现表单式批量录入数据 96 实例080 在TStringGrid中实现单元格下拉列表 98 实例081 在TStringGrid组件中绘图 99 实例082 TStringGrid组件上回车移动焦点 100 实例083 在...

    java开源包1

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    JAVA上百实例源码以及开源项目源代码

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    java开源包10

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    Visual C++程序开发范例宝典(PDF扫描版).part3

     cc实例051 利用ListBox控件实现标签式数据选择   cc实例052 在ListBox控件间实现数据交换   cc实例053 列表项的提示条   2.4 ComboBox控件典型实例   cc实例054 将数据表中的字段添加到ComboBox控件...

    Visual C++ 程序开发范例宝典 源码 光盘 part2

    cc实例051 利用ListBox控件实现标签式数据选择 cc实例052 在ListBox控件间实现数据交换 cc实例053 列表项的提示条 2.4 ComboBox控件典型实例 cc实例 054 将数据表中的字段添加到ComboBox控件 cc实例055 ...

    Visual C++程序开发范例宝典(PDF扫描版).part2

     cc实例051 利用ListBox控件实现标签式数据选择   cc实例052 在ListBox控件间实现数据交换   cc实例053 列表项的提示条   2.4 ComboBox控件典型实例   cc实例054 将数据表中的字段添加到ComboBox控件...

    java开源包11

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包2

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包6

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包5

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

Global site tag (gtag.js) - Google Analytics