4

私のシステムのある場所で、私は次のことを行います。これは正しく機能します。

   log.debug params."${tagType}"_${i}" //resolves to, e.g : params.title_0

さらに、以下も機能します。

log.debug params."${'setTagtypesList[0].tagtype.id'} // hard coded 0 index

(上記は解決されparams.'setTagtypesList[0].tagtype.id'、一重引用符が必要であることに注意してください。)

ただし、次のparams要求はNULLになります。

def someInt = 0
log.debug params."'setTagtypesList[someInt].tagtype.id'" //dynamic index

では、配列構文を含むパラメーター名を動的に作成するにはどうすればよいですか?Grails1.3.9を使用しています。

4

1 に答える 1

3

あなたが望むものを達成するための様々な方法があります:

params."setTagtypesList[${someInt}].tagtype.id"
params['setTagtypesList[' + someInt + '].tagtype.id']

どちらも最終的には略記です

params.get('setTagtypesList[' + someInt + '].tagtype.id')

GStringsで覚えておくべきことは、内側${}はすべてGroovy式であり、中括弧の外側は文字通りに解釈されるということです。

ただし、注意してください

params["setTagtypesList[${someInt}].tagtype.id"]

文字列ではなくGStringキーを使用してマップエントリを検索しているため、機能しない可能性があります。プロパティアクセスドット表記はtoString()、キーを検索する前にキーに対して暗黙的に実行されます。これは、文字列とGStringの違いに注意する必要がある場合の1つです。

于 2012-08-24T22:53:03.877 に答える