2013-05-31 11 views
30

Jestem pewien, że to bardzo proste pytanie, ale jestem nowy dla Groovy'ego i jest to coś, z czym borykałem się przez jakiś czas. Mam HttpServletRequest i muszę coś zrobić z jego parametrami. Jednak chcę wykluczyć dokładnie 1 parametr.Usuwanie klucza z mapy Groovy

Wcześniej używałem

req.getParameterMap 

Jednak, aby usunąć jedną wartość, próbuję coś wzdłuż linii

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

wiem, że powyższe nie dość pracy, ale to jest kod pseudo-kodowy dla tego, co próbuję osiągnąć. Naprawdę potrzebuję nowej mapy i oryginalnych obiektów req.getParameterMap(), aby wyglądały dokładnie tak samo, z wyjątkiem jednego brakującego klucza. Jaki jest najlepszy sposób, aby to osiągnąć? Dzięki!

+3

Czy używasz grails lub po prostu dodajesz groovy obsługę do aplikacji java? –

+0

Po prostu używane w aplikacji java. – JToland

Odpowiedz

41

req.getParameterMap zwraca niezmienną mapę, której nie można zmienić. Musisz utworzyć nową mapę, putAll z mapy parametrów i usunąć wymagany klucz, którego nie chcesz.

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

Masz nową mapę jako reqParams (bez niepożądanej pary kluczy wartość) i oryginalnego parametru mapę.

+0

Ach, to ma sens. Nie zdawałem sobie sprawy, że to jest niezmienne. Dzięki! – JToland