Map接口的使用。。。今天遇到的问题。。

王朝java/jsp·作者佚名  2006-01-09
宽屏版  字体: |||超大  

/**

* 从请求中取出所有参数列表,

* 然后和工作项id一起保存到数据库中

* @param req HttpServletRequest

*/

protected void doSaveParameters(HttpServletRequest req){

Map pMap = req.getParameterMap();

System.out.println("zqbtest*******Map:"+pMap);

Iterator entries = pMap.keySet().iterator();

System.out.println("zqbtest*****Iterator::"+entries);

while(entries.hasNext()){

Map.Entry entry = (Map.Entry)entries.next();//此处出错!!!

String key = (String)entry.getKey();

String value = (String)entry.getValue();

mtst.insertSaveParameter(workItemId,key,value);

}

}

后台打印信息:

zqbtest*******Map:{reassign=[Ljava.lang.String;@6e9cc3, fxcfh=[Ljava.lang.String

;@75d174, bsize=[Ljava.lang.String;@a4a32, readonlysendpersons=[Ljava.lang.Strin

g;@d539f, specialsendstep=[Ljava.lang.String;@6d0085, nextsteppersons=[Ljava.lan

g.String;@3d4817, fxfba=[Ljava.lang.String;@47e54e, specialsendpersons=[Ljava.la

ng.String;@1f91ac, fxfaaX=[Ljava.lang.String;@14f467, Unknown5copy=[Ljava.lang.S

tring;@39d072, Unknown3=[Ljava.lang.String;@2422d9}

zqbtest*****Iterator::java.util.HashMap$HashIterator@6c12f3

抛出异常如下:

HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling

this request.

exception

java.lang.ClassCastException: java.lang.String

at com.neusoft.fd.processor.WFProcessor.doSaveParameters(WFProcessor.java:1149)

程序经过修改后的代码:

/**

* 从请求中取出所有参数列表,

* 然后和工作项id一起保存到数据库中

* @param req HttpServletRequest

*/

protected void doSaveParameters(HttpServletRequest req){

Map pMap = req.getParameterMap();

Iterator entries = pMap.entrySet().iterator();

while(entries.hasNext()){

Map.Entry entry = (java.util.Map.Entry) entries.next();

String key = (String) entry.getKey();

String[] values = (String[])entry.getValue();

for (int i = 0; i < values.length; i++) {

String value = values[i];

mtst.insertSaveParameter(workItemId, (String) key, value);

}

//String value = (String)pMap.get(key);

}

}

错误的原因如下:

1、 Iterator entries = pMap.entrySet().iterator();

要用entrySet()取出Iterator;

2、entries.next() 得出的是java.util.Map.Entry这个是Map接口的内部接口;

它的getValue方法,返回的是一个String[];

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有