it-swarm.com.de

Entfernen eines bestimmten Schlüssels von einer Groovy Map

Ich bin mir sicher, dass dies eine sehr einfache Frage ist, aber ich bin sehr neu bei Groovy und es ist etwas, mit dem ich schon eine Weile zu kämpfen habe. Ich habe ein HttpServletRequest und ich muss etwas mit seinen Parametern machen. Ich möchte jedoch genau 1 Parameter ausschließen.

Zuvor habe ich verwendet

req.getParameterMap

Um jedoch den einen Wert zu entfernen, versuche ich etwas in der Art von

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

Ich weiß, dass das oben Genannte nicht ganz funktioniert, aber das ist der Pseudocode für das, was ich erreichen möchte. Ich brauche wirklich die neue Map und die originalen req.getParameterMap() Objekte, die bis auf den einen fehlenden Schlüssel genau gleich aussehen. Was ist der beste Weg, um dies zu erreichen? Vielen Dank!

37
JToland

req.getParameterMap gibt eine unveränderliche Map zurück, die nicht geändert werden kann. Sie müssen eine neue Map, putAll, aus der Parameter-Map erstellen und den erforderlichen Schlüssel entfernen, den Sie nicht möchten.

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

Sie haben Ihre neue Zuordnung als reqParams (ohne das unerwünschte Schlüsselwertpaar) und die ursprüngliche Parameterzuordnung.

52
dmahapatro

Sie können die Funktion findAll wie folgt verwenden:

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