我目前工作的API控制器上。 该控制器应能赶上任何- 未知 -参数,并把它放在一个Map
对象。 现在,我使用这个代码来捕获所有的参数,并把它们放在一个Map
public String processGetRequest(final @RequestParam Map params)
现在我所说的网址如下:
server/api.json?action=doSaveDeck&Card_IDS[]=1&Card_IDS[]=2&Card_IDS[]=3
然后,我打印出来的参数,进行调试,以这段代码:
if (logger.isDebugEnabled()) {
for (Object objKey : params.keySet()) {
logger.debug(objKey.toString() + ": " + params.get(objKey));
}
}
那结果是:
10:43:01,224 DEBUG ApiRequests:79 - action: doSaveDeck
10:43:01,226 DEBUG ApiRequests:79 - Card_IDS[]: 1
但是,预期的结果应该是这样的:
10:43:XX DEBUG ApiRequests:79 - action: doSaveDeck
10:43:XX DEBUG ApiRequests:79 - Card_IDS[]: 1
10:43:XX DEBUG ApiRequests:79 - Card_IDS[]: 2
10:43:XX DEBUG ApiRequests:79 - Card_IDS[]: 3
或至少告诉我,Card_IDS是String[] / List<String>
,因此应被铸造。 我也试过铸造参数到List<String>
手动但是,这并不工作,要么:
for (Object objKey : params.keySet()) {
if(objKey.equals(NameConfiguration.PARAM_NAME_CARDIDS)){ //Never reaches this part
List<String> ids = (List<String>)params.get(objKey);
for(String id : ids){
logger.debug("Card: " + id);
}
} else {
logger.debug(objKey + ": " + params.get(objKey));
}
}
有人能告诉我怎么去数组Card_IDS
- 它必须是动态的 -从Map params
使用NameConfiguration.PARAM_NAME_CARDIDS
?