I'm sure this is a very simple question, but I'm very new to Groovy and it's something I've been struggling with for awhile now. I have an HttpServletRequest
and I need to do something with it's parameters. However, I want to exclude exactly 1 parameter.
Previously, I was using
req.getParameterMap
However, to remove the one value, I'm trying something along the lines of
def reqParams = req.getParameterMap?.remove('blah');
I know that the above does not quite work, but that's the psuedo-code for what I'm trying to achieve. I really need the new Map and the original req.getParameterMap()
Objects to look exactly the same except for the one missing key. What's the best way to achieve this? Thanks!
Assuming your set contains the strings you want to remove, you can use the keySet method and map. keySet(). removeAll(keySet); . keySet returns a Set view of the keys contained in this map.
If you wanted to do it that way, iterate over map. keySet() and the rest will work as you expected. It should work if you use s. key & s.
req.getParameterMap
returns an immutable map which cannot be modified. You need to create a new map, putAll
from the parameter map and remove the required key you do not want.
def reqParams = [:] << req.getParameterMap() reqParams.remove('blah')
You have your new map as reqParams
(without the undesired key value pair) and the original parameter map.
You can use findAll
function, somethig like:
def map = req.getParameterMap().findAll {it.key != 'blah'}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With