web-dev-qa-db-ja.com

Groovyマップから特定のキーを削除する

これは非常に簡単な質問であると確信していますが、Groovyには非常に新しく、しばらく苦労してきました。 HttpServletRequestがあり、そのパラメーターで何かをする必要があります。しかし、私は正確に1パラメータを除外したいです。

以前、私が使用していました

_req.getParameterMap
_

ただし、1つの値を削除するには、次の行に沿って何かを試しています

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

上記はまったく機能しないことを知っていますが、それは私が達成しようとしているものの擬似コードです。キーが欠落していることを除いて、まったく同じに見えるようにするには、新しいマップと元のreq.getParameterMap()オブジェクトが本当に必要です。これを達成するための最良の方法は何ですか?ありがとう!

37
JToland

req.getParameterMapは、変更できない不変のマップを返します。パラメータマップから新しいマップputAllを作成し、不要なキーを削除する必要があります。

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

reqParams(望ましくないキーと値のペアなし)としての新しいマップと、元のパラメーターマップがあります。

52
dmahapatro

次のようなfindAll関数を使用できます。

def map = req.getParameterMap().findAll {it.key != 'blah'}
5
rsa