最近在工作中整合友盟消息推送服务时,遇到了用 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 类型的参数。
完。
转载于:https://blog.51cto.com/xitongjiagoushi/1670299