public class PageMapAdapter extends
XmlAdapter<PageMapConverter, IPage<Map<String, Object>>> { @Override
public PageMapConverter marshal(IPage<Map<String, Object>> v)
throws Exception {
if(v == null){
return null;
}
PageMapConverter page = new PageMapConverter();
ArrayList<PageMapConverter.Entry[]> pageResult = new ArrayList<PageMapConverter.Entry[]>();
if(v.getResult() != null){
for (Map<String, Object> map : v.getResult()) {
PageMapConverter.Entry[] object = new PageMapConverter.Entry[map.size()];
int i = 0;
for (Map.Entry<String, Object> entry : map.entrySet()) {
PageMapConverter.Entry mapEntry = new PageMapConverter.Entry();
mapEntry.setKey(entry.getKey());
if(entry.getValue() instanceof String){
mapEntry.setValue(EncodeUtil.urlEncode(entry.getValue().toString()));
}
else {
mapEntry.setValue(entry.getValue());
}
//System.out.println(mapEntry.getValue());
object[i++] = mapEntry;
}
pageResult.add(object);
}
} page.setResult(pageResult);
page.setPageNo(v.getPageNo());
page.setPageSize(v.getPageSize());
page.setTotalCount(v.getTotalCount());
page.setAutoCount(v.isAutoCount());
page.setJumpNumber(v.getJumpNumber());
page.setOrder(v.getOrder());
page.setOrderBy(v.getOrderBy());
page.setTogglestatus(v.getTogglestatus());
page.setTotalPages(v.getTotalPages()); return page;
} @Override
public IPage<Map<String, Object>> unmarshal(PageMapConverter v) throws Exception {
if(v == null){
return null;
} Page<Map<String, Object>> page = new Page<Map<String, Object>>();
List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>();
Map<String, Object> map = null;
if(v.getResult() != null){
for (PageMapConverter.Entry[] list : v.getResult()) {
map = new HashMap<String, Object>();
for (PageMapConverter.Entry mapEntry : list) {
if(mapEntry.getValue() instanceof String){
map.put(mapEntry.getKey(), EncodeUtil.urlDecode(mapEntry.getValue().toString()));
}
else if(mapEntry.getValue() instanceof XMLGregorianCalendarImpl){
XMLGregorianCalendarImpl date = (XMLGregorianCalendarImpl)mapEntry.getValue();
map.put(mapEntry.getKey(), date.toGregorianCalendar().getTime());
}
else {
map.put(mapEntry.getKey(), mapEntry.getValue());
} }
mapList.add(map);
}
} page.setResult(mapList);
page.setPageNo(v.getPageNo());
page.setPageSize(v.getPageSize());
page.setTotalCount(v.getTotalCount());
page.setTotalCount(v.getTotalCount());
page.setAutoCount(v.isAutoCount());
page.setJumpNumber(v.getJumpNumber());
//should not null or empty
if(StringUtil.isNotEmpty(v.getOrder())){
page.setOrder(v.getOrder());
}
page.setOrderBy(v.getOrderBy());
page.setTogglestatus(v.getTogglestatus());
page.setTotalPages(v.getTotalPages()); return page;
} }

(2)MapAdapter

/**
* Map适配器
* @author caosongqing
*
*/
public class MapAdapter extends
XmlAdapter<MapConverter, Map<String, Object>>{ @Override
public MapConverter marshal(Map<String, Object> map) throws Exception {
if(map == null){
return null;
} MapConverter converter = new MapConverter();
for(Map.Entry<String, Object> entry:map.entrySet()){
MapConverter.MapEntry e = new MapConverter.MapEntry();
e.setKey(entry.getKey());
e.setValue(ConverterUtil.encode(entry.getValue()));
converter.addEntry(e);
}
return converter;
} @Override
public Map<String, Object> unmarshal(MapConverter map) throws Exception {
if(map == null){
return null;
} Map<String, Object> result = new HashMap<String, Object>();
for(MapConverter.MapEntry e : map.getEntries()){
result.put(e.getKey(), ConverterUtil.decode(e.getValue()));
} return result;
} }

PageMapAdapter MapAdapter (续webServices)的更多相关文章

  1. webServices 执行流程,(我是菜鸟,我怕谁,仅代表个人理解,欢迎各位大神们指导,不和您的胃口,请默默离开!!)

    二.上图仅仅代表个人理解,下面以代码方式解释一下. (1) strtus.xml <?xml version="1.0" encoding="UTF-8" ...

  2. .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整(续)-使用配置文件动态注入

    上次实现了依赖注入,但是web项目必须要引用业务逻辑层和数据存储层的实现,项目解耦并不完全:另一方面,要同时注入业务逻辑层和数据访问层,注入的服务直接写在Startup中显得非常臃肿.理想的方式是,w ...

  3. [.NET] C# 知识回顾 - 委托 delegate (续)

    C# 知识回顾 - 委托 delegate (续) [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6046171.html 序 上篇<C# 知识回 ...

  4. 《C#开发常用免费WebServices集合》

    天气预报 Web服务,数据来源于中国气象局 公用事业 http://www.webxml.com.cn/WebServices/WeatherWebService.asmx 中国股票行情 分时走势预览 ...

  5. iOS 开发者账号到期续费流程

    1.登录developer.apple.com,查看到期时间 2.到期提醒通知,点击Renew Membership续费(一般提前一个月提醒续费) 3.个人开发者账号续费需要支付 688人民币/年(9 ...

  6. 微信公众号开发系列教程一(调试环境部署续:vs远程调试)

    http://www.cnblogs.com/zskbll/p/4080328.html 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试 ...

  7. CI-持续集成(1)-软件工业“流水线”概述

    CI-持续集成(1)-软件工业“流水线”概述 1   概述 持续集成(Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次, ...

  8. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续3篇-导出时动态生成多Sheet EXCEL)

    ExcelUtility 类库经过我(梦在旅途)近期不断的优化与新增功能,现已基本趋向稳定,功能上也基本可以满足绝大部份的EXCEL导出需求,该类库已在我们公司大型ERP系统全面使用,效果不错,今天应 ...

  9. webServices与Web服务

    本篇的内容在MSND中标注已是一项旧技术,而取而代之的是WCF, 那么我也放弃吧!但是这个属于Web服务的范畴,而WCF本质上也是一个Web服务来的,所以对于基础的东西还是不变的.那么这次就着重看看这 ...

随机推荐

  1. android 上传图片到服务器Tomcat(Struts2)

    在做android开发的时候,有时你会用到图片的上传功能,在我的android项目中,我是选中图片,点击上传多张图片 android客户端上传图片部分的代码如下: package com.exampl ...

  2. lc面试准备:Remove Duplicates from Sorted List II

    1 题目 Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct ...

  3. lc面试准备:Candy

    1 题目 There are N children standing in a line. Each child is assigned a rating value. You are giving ...

  4. Linux Shell编程(13)——数字常量

    除非一个数字有特别的前缀或符号,否则shell脚本把它当成十进制的数.一个前缀为0的数字是八进制数.一个前缀为0x的数字是十六进制数.一个数用内嵌的#来求值则看成BASE#NUMBER(有范围和符号限 ...

  5. Unity3d 基于物理渲染Physically-Based Rendering之实现

    根据前文的例子http://blog.csdn.net/wolf96/article/details/44172243(不弄超链接了审核太慢)弄一下真正的基于物理的渲染逃了节课= =,弄了一下.公式和 ...

  6. stringstream 与空格 (大家讨论一下代码结果的原因)

    #include <iostream> // std::cout, std::endl #include <iomanip> // std::setw #include < ...

  7. ClientScriptManager与ScriptManager向客户端注册脚本的区别

    使用ClientScriptManager向客户端注册脚本 ClientScriptManager在非异步(就是说非AJAX)环境下使用的.如果要在异步环境下注册脚本应该使用ScriptManager ...

  8. codeforces 421d bug in code

    题目链接:http://codeforces.com/problemset/problem/421/D 题目大意:每个人说出自己认为的背锅的两个人,最后大BOSS找两个人来背锅,要求至少符合p个人的想 ...

  9. 宁波Uber优步司机奖励政策(1月18日~1月24日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  10. Javascript诞生与历史

    基本常识 Brendan Eich在1995年4月入职Netscape Communications Corporation(网景通信公司).并于1995年5月用10天时间发明了Javascript. ...