Attualmente sto lavorando su un controller API. Questo controller dovrebbe essere in grado di rilevare qualsiasi parametro - sconosciuto - e inserirlo in un oggetto Map
. Ora sto usando questo codice per la cattura di tutti i parametri e metterli in un Map
Spring MVC + RequestParam as Map + ottiene parametri dell'array URL non funzionanti
public String processGetRequest(final @RequestParam Map params)
Ora l'url io chiamo è la seguente:
server/api.json?action=doSaveDeck&Card_IDS[]=1&Card_IDS[]=2&Card_IDS[]=3
Poi stampare i parametri, a scopo di debug , con questo pezzo di codice:
if (logger.isDebugEnabled()) {
for (Object objKey : params.keySet()) {
logger.debug(objKey.toString() + ": " + params.get(objKey));
}
}
Il risultato di questo è:
10:43:01,224 DEBUG ApiRequests:79 - action: doSaveDeck
10:43:01,226 DEBUG ApiRequests:79 - Card_IDS[]: 1
Ma il risultato atteso dovrebbe essere qualcosa di simile:
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
o almeno mi dicono che i Card_IDS è un String[]/List<String>
e, pertanto, dovrebbero essere colate. Ho anche provato gettando il parametro ad un List<String>
manualmente, ma che non funziona neanche:
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));
}
}
Qualcuno potrebbe dirmi come ottenere la matrice Card_IDS
- Deve essere dinamicamente - dal Map params
utilizzando il NameConfiguration.PARAM_NAME_CARDIDS
?