最近在工作中整合友盟消息推送服务时,遇到了用 Ajax 向 Java 后台传递自定义参数的需求,当时想要采取 java.util.Map ,但发现 Ajax 无法传递 java.util.Map 类型的参数,后来无奈采取的方式的是采用了这样的 Vo 对象:
public ExtraVo { private List<String> keys; private List<String> values; //省略 get | set 方法 }
取值时:
if(extraVo.getKeys() != null) { for(int i = 0; i < extraVo.getKeys.size(); i++) { broadcast.setExtraField(extraVo.getKeys().get(i), extraVo.getValues().get(i)); } }
虽然解决了问题,但是确实呆萌,后来转念一想才发现脑子懵了,为什么不用 List<SomeVo> 这种形式呢?而 org.apache.commons.httpclient.NameValuePair 正是实现 key-value 的一种类(当然这个类很简单,如果不想引入额外 jar 包完全可以自己去实现),改造后的 Vo 对象:
public ExtraVo { private List<NameValuePair> customParams; //省略 get | set 方法 }
取值时:
if(extraVo.getCustomParams() != null) { for(int i = 0; i < extraVo.getCustomParams().size(); i++ ) { broadcast.setExtraField(extraVo.getCustomParams().get(i).getName(),extraVo.getCustomParams().get(i).getValue()); } }
这样就简单的实现了前后台传递 Map 类型的参数。
完。
本文出自 “细桶假狗屎” 博客,请务必保留此出处http://xitongjiagoushi.blog.51cto.com/9975742/1670299
原文地址:http://xitongjiagoushi.blog.51cto.com/9975742/1670299