从Groovy Map中删除给定键

JTo*_*and 37 groovy map httprequest

我确信这是一个非常简单的问题,但我对Groovy很新,这是我一直在努力的一段时间.我有一个HttpServletRequest,我需要用它的参数做一些事情.但是,我想要排除1个参数.

以前,我在使用

req.getParameterMap
Run Code Online (Sandbox Code Playgroud)

但是,为了删除一个值,我正在尝试一些类似的东西

def reqParams = req.getParameterMap?.remove('blah');
Run Code Online (Sandbox Code Playgroud)

我知道上面的内容不太合适,但这就是我想要实现的伪代码.我真的需要新的Map和原始的req.getParameterMap()Objects看起来完全一样,除了一个丢失的键.实现这一目标的最佳方法是什么?谢谢!

dma*_*tro 52

req.getParameterMap返回一个无法修改的不可变映射.您需要putAll从参数映射创建一个新映射并删除您不需要的所需键.

def reqParams = [:] << req.getParameterMap()
reqParams.remove('blah')
Run Code Online (Sandbox Code Playgroud)

您将新地图reqParams(没有不需要的键值对)和原始参数映射.


小智 6

您可以使用 findAll函数,例如:

def map = req.getParameterMap().findAll {it.key != 'blah'}
Run Code Online (Sandbox Code Playgroud)