Spring MVC + RequestParam comme Carte + obtenir l'URL de la matrice de paramètres ne fonctionne pas
Je suis actuellement en train de travailler sur une API contrôleur. Ce contrôleur doit être en mesure de rattraper tout - inconnu - paramètre et le mettre dans un Map
objet. Maintenant, je suis en utilisant ce code pour attraper tous les paramètres et de les mettre dans un Map
public String processGetRequest(final @RequestParam Map params)
Maintenant l'url que j'ai appel comme suit:
server/api.json?action=doSaveDeck&Card_IDS[]=1&Card_IDS[]=2&Card_IDS[]=3
Puis-je imprimer les paramètres, à des fins de débogage, avec ce morceau de code:
if (logger.isDebugEnabled()) {
for (Object objKey : params.keySet()) {
logger.debug(objKey.toString() + ": " + params.get(objKey));
}
}
Le résultat est de:
10:43:01,224 DEBUG ApiRequests:79 - action: doSaveDeck
10:43:01,226 DEBUG ApiRequests:79 - Card_IDS[]: 1
Mais le résultat attendu doit être quelque chose comme:
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
Ou au moins me dire que la Card_IDS est un String[] /List<String>
et, par conséquent, doit être utilisé. J'ai aussi essayé le casting du paramètre à une List<String>
manuellement mais cela ne fonctionne pas non plus:
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));
}
}
Quelqu'un pourrait-il me dire comment obtenir le tableau Card_IDS
- Il doit être dynamiquement - à partir de la Map params
à l'aide de la NameConfiguration.PARAM_NAME_CARDIDS
?
OriginalL'auteur Jaap Oudejans | 2013-05-03
Vous devez vous connecter pour publier un commentaire.
Lorsque vous demandez un
Map
annoté avec@RequestParam
Printemps crée une carte contenant tous les paramètres de la requête paires nom/valeur. Si il y a deux paires avec le même nom, alors seulement on peut être à la carte. Il est donc essentiellement unMap<String, String>
Vous pouvez accéder à tous paramètres par le biais d'un
MultiValueMap
:Cette carte est essentiellement un
Map<String, List<String>>
. Les paramètres avec le même nom serait dans la même liste.OriginalL'auteur a better oliver