Hello Mr.J——WebService传递Map类型
2016-06-30 19:21
423 查看
上篇博客提到了,WebService不能传递Map类型的数据,然而我还是找到了一种方法可以传过去,用的就是JDK自带的适配器。
比如,上篇博客中,我的代码出现了这样一段。
对这个list进行处理循环放到map里面就能和应该返回的结果一样了,下篇搞客户端的时候补代码- -。
比如,上篇博客中,我的代码出现了这样一段。
@WebMethod @XmlJavaTypeAdapter(MapAdapter.class) @WebResult(partName = "return") Map<String, Object> queryProfessionalByCollageId( @WebParam(name = "collageId") String collageId, @WebParam(name = "dataBaseName") String dataBaseName, @WebParam(name = "name") String name);这个就是使用了XmlJavaTypeAdapter这个注解,注解中写的类是我们自己对这个Map进行处理的类。
public class MapAdapter extends XmlAdapter<MapConvertor, Map<String, Object>> { @Override public MapConvertor marshal(Map<String, Object> map) throws Exception { MapConvertor convertor = new MapConvertor(); for (Map.Entry<String, Object> entry : map.entrySet()) { MapConvertor.MapEntry e = new MapConvertor.MapEntry(entry); convertor.addEntry(e); } return convertor; } @Override public Map<String, Object> unmarshal(MapConvertor map) throws Exception { Map<String, Object> result = new HashMap<String, Object>(); for (MapConvertor.MapEntry e : map.getEntries()) { result.put(e.getKey(), e.getValue()); } return result; } }还有一个转换之后的实体类。
@XmlType(name = "MapConvertor") @XmlAccessorType(XmlAccessType.FIELD) public class MapConvertor { private List<MapEntry> entries = new ArrayList<MapEntry>(); public void addEntry(MapEntry entry) { entries.add(entry); } public void setEntries(List<MapEntry> entries) { this.entries = entries; } public List<MapEntry> getEntries() { return entries; } public static class MapEntry { private String key; private Object value; public MapEntry() { super(); } public MapEntry(Map.Entry<String, Object> entry) { super(); this.key = entry.getKey(); this.value = entry.getValue(); } public MapEntry(String key, Object value) { super(); this.key = key; this.value = value; } public String getKey() { return key; } public void setKey(String key) { this.key = key; } public Object getValue() { return value; } public void setValue(Object value) { this.value = value; } } }然后我们在客户端调用的时候会返回一个MapConventor类型的对象,这个时候我们直接使用 getEntries()方法,可以获得一个list.
对这个list进行处理循环放到map里面就能和应该返回的结果一样了,下篇搞客户端的时候补代码- -。
相关文章推荐
- 妹子好不好,只看一个地方!
- list-style
- python之根据数值打印对应数目*号
- DNS工作原理-----简述
- 侧滑
- Linux /proc/stat结点cpu信息含义简述
- hdu 4983(欧拉函数)
- 常用 Git 命令清单
- Flex远程访问获取数据--HTTPService
- tableView滚动到底部
- Mysql索引与键
- RecyclerView的使用_android
- python2.7读写xls
- Python学习笔记(三): 收集参数
- js面试程序题及详解
- 添加图片水印 PHP实现
- hdu 3589(二次剩余+雅可比符号)
- cmd命令启动tomcat
- OpenCV与EmguCV中的漫水填充
- python 字符转换