45

我确信这是一个非常简单的问题,但我对 Groovy 很陌生,而且我一直在努力解决这个问题。我有一个HttpServletRequest,我需要对它的参数做一些事情。但是,我想排除 1 个参数。

以前,我在使用

req.getParameterMap

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

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

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

4

2 回答 2

66

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

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

你有你的新映射reqParams(没有不需要的键值对)和原始参数映射。

于 2013-05-31T15:48:19.820 回答
15

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

def map = req.getParameterMap().findAll {it.key != 'blah'}
于 2018-08-10T21:49:51.213 回答