web-dev-qa-db-fra.com

Suppression d'une clé donnée d'une carte Groovy

Je suis sûr que c'est une question très simple, mais je suis très nouveau pour Groovy et c'est quelque chose avec lequel je me bats depuis un moment. J'ai un HttpServletRequest et je dois faire quelque chose avec ses paramètres. Cependant, je veux exclure exactement 1 paramètre.

Auparavant, j'utilisais

req.getParameterMap

Cependant, pour supprimer la seule valeur, j'essaie quelque chose dans le sens de

def reqParams = req.getParameterMap?.remove('blah');

Je sais que ce qui précède ne fonctionne pas tout à fait, mais c'est le pseudo-code pour ce que j'essaie de réaliser. J'ai vraiment besoin que la nouvelle carte et les objets req.getParameterMap() d'origine soient exactement identiques, à l'exception de la seule clé manquante. Quelle est la meilleure façon d'y parvenir? Merci!

37
JToland

req.getParameterMap renvoie une carte immuable qui ne peut pas être modifiée. Vous devez créer une nouvelle carte, putAll à partir de la carte de paramètres et supprimer la clé requise dont vous ne voulez pas.

def reqParams = [:] << req.getParameterMap()
reqParams.remove('blah')

Vous avez votre nouvelle carte en tant que reqParams (sans la paire de valeurs de clé indésirable) et la carte de paramètres d'origine.

52
dmahapatro

Vous pouvez utiliser la fonction findAll, quelque chose comme:

def map = req.getParameterMap().findAll {it.key != 'blah'}
5
rsa