2013-05-31 6 views
30

Ich bin mir sicher, dass dies eine sehr einfache Frage ist, aber ich bin neu bei Groovy und es ist etwas, mit dem ich mich schon eine Weile herumgeschlagen habe. Ich habe eine HttpServletRequest und ich muss etwas mit seinen Parametern tun. Ich möchte jedoch genau 1 Parameter ausschließen. ZuvorEinen gegebenen Schlüssel aus einer Groovy Map entfernen

, ich wurde mit

req.getParameterMap 

jedoch auf den einen Wert zu entfernen, ich versuche, etwas entlang der Linien von

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

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

+3

Verwenden Sie Grails oder fügen Sie Ihrer Java App einfach groovige Unterstützung hinzu? –

+0

Wird nur in einer Java App verwendet. – JToland

Antwort

41

req.getParameterMap gibt eine unveränderbare Karte zurück, die nicht geändert werden kann. Sie müssen eine neue Karte, putAll, aus der Parameterzuordnung erstellen und den gewünschten Schlüssel entfernen, den Sie nicht möchten.

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

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

+0

Ah, das macht Sinn. Ich wusste nicht, dass es unveränderlich ist. Vielen Dank! – JToland