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

经过一段时间的实践,以及后台组的帮助。

最终确定的数据协议是用 Map,输入参数,及返回结果都是 Map

返回结果
Map
- headers:HeaderModel[dataField:String, headerText:String, visible:Boolean...]
- data:List>
- totalPage:long
- currentPage:long

而上述的结果通过统一的过滤层处理,把原始的数据根据配置文件,处理成前台界面需要显示数据格式。配置示例如下:













而在最终的Flex服务类中, 过滤原始数据,也就是加上必要的 Headers 还有就是将 字典的数据翻译成对应的中文。

public Map queryContacts(Map 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,),
界面结构

cornerRadius="5"
title="查询条件"
height="50"
top="5"
left="5"
right="5"
horizontalScrollPolicy="off"
verticalScrollPolicy="off"
styleName="sheetPanelStyle">
typeEnabled="{_typeEnabled}"
phoneNumberLabel="{phoneNumberLabel}"
phoneNumberRequired="{_phoneNumberRequired}"
typeDataProvider="{typeDataProvider}"
searchButtonClick="doSearch(event)"
width="100%"
height="100%"/>

cornerRadius="5"
width="100%"
layout="vertical"
height="100%"
top="55"
left="5"
right="5"
bottom="5"
styleName="sheetPanelStyle">
displayTitle=""
width="100%"
height="18"
pageChanged="onPageChanged(event)"/>
width="100%"
height="100%">




配置文件(上一篇文章那个仿Windows的UI框架的配置文件)

parameters="serviceName=contactService;methodName=find;startTimeKey=dateTimeStart;endTimeKey=dateTimeEnd;pageNumberKey=currentPage;pageSizeKey=pageSize;..." />


所有这些,最终的效果不过是一个简单的 查询 - 结果列表 界面。
[img]http://dl.iteye.com/upload/attachment/326494/68cb4942-855f-358c-9d43-a2f8c4898f8a.png[/img]


而一旦这一个界面Okay了,其他类似的界面不过是修改配置文件而已。我们已经通过时间证明前期花费的时间和精力是值得的。

唯一的一个问题就是,查询条件的生成,我一直没有找到足够简单的解决方法。

通过一系列的小工具(服务器的ItemFilter工具,通用的界面(QueryCondition,Pager,ServiceUtils))最终我们完成一个可以应对变化的界面。

你可能感兴趣的:(Flex,数据结构,Flex,XML,UI,框架)