最近在工做中整合友盟消息推送服务时,遇到了用 Ajax 向 Java 后台传递自定义参数的需求,当时想要采起 java.util.Map ,但发现 Ajax 没法传递 java.util.Map 类型的参数,后来无奈采起的方式的是采用了这样的 Vo 对象:java
public ExtraVo { private List<String> keys; private List<String> values; //省略 get | set 方法 }
取值时:apache
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 对象:ide
public ExtraVo { private List<NameValuePair> customParams; //省略 get | set 方法 }
取值时:spa
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 类型的参数。对象
完。get