Groovy 获取包含在映射中的列表
我有以下代码:Groovy 获取包含在映射中的列表,groovy,Groovy,我有以下代码: def bindingMap = [title: 'The Lamb Lies Down On Broadway', 'players[0]': [name: 'Steve Hackett'], 'players[1]': [name: 'Peter Gabriel'], 'players[2]': [name: 'Tony Banks']] 我想从上面的地图上找到“阵法
def bindingMap = [title: 'The Lamb Lies Down On Broadway',
'players[0]': [name: 'Steve Hackett'],
'players[1]': [name: 'Peter Gabriel'],
'players[2]': [name: 'Tony Banks']]
我想从上面的地图上找到“阵法”玩家。
因此,下面这句话会起作用:
def players = bindingMap.players
assert players == [[name: 'Steve Hackett'], [name: 'Peter Gabriel'], [name: 'Tony Banks']]
感谢您的帮助在此特定地图结构中,您可以
查找以players
开头的条目,然后从这些条目中收集值
:
def bindingMap = [title: 'The Lamb Lies Down On Broadway',
'players[0]': [name: 'Steve Hackett'],
'players[1]': [name: 'Peter Gabriel'],
'players[2]': [name: 'Tony Banks']]
def players = bindingMap
.findAll { key, value -> key.startsWith("players") }*.value
assert players == [
[name: 'Steve Hackett'], [name: 'Peter Gabriel'], [name: 'Tony Banks']]
在此特定地图结构中,您可以findAll
条目,其键以players
开头,然后从这些条目中收集值
:
def bindingMap = [title: 'The Lamb Lies Down On Broadway',
'players[0]': [name: 'Steve Hackett'],
'players[1]': [name: 'Peter Gabriel'],
'players[2]': [name: 'Tony Banks']]
def players = bindingMap
.findAll { key, value -> key.startsWith("players") }*.value
assert players == [
[name: 'Steve Hackett'], [name: 'Peter Gabriel'], [name: 'Tony Banks']]
最初的问题并不表示这是关于Grails中的参数绑定,但问题后面的注释说明了这一点。因为这就是您正在做的事情,所以无需自己编写任何参数解析代码即可完成
// grails-app/controllers/demo/DemoController.groovy
package demo
class DemoController {
def index(MyCommand command) {
// command.people will be populated if the request
// includes parameters like...
// people[0].name=Jeff
// people[0].town='St. Louis'
// people[1].name='Matt'
// people[1].town='San Jose'
// ...
}
}
class MyCommand {
List<People> people
}
class People {
String name
String town
}
//grails-app/controllers/demo/DemoController.groovy
软件包演示
类控制器{
def索引(MyCommand命令){
//如果请求失败,将填充command.people
//包括参数,如。。。
//联系人[0]。姓名=Jeff
//人[0]。镇class='圣路易斯'
//人物[1]。姓名class='Matt'
//人[1]。镇上的“圣何塞”
// ...
}
}
类MyCommand{
列出人
}
阶级人士{
字符串名
弦镇
}
与编写自己的参数解析代码相比,这有很多好处。最初的问题并不表示这是关于Grails中的参数绑定,但问题后面的注释确实如此。因为这就是您正在做的事情,所以无需自己编写任何参数解析代码即可完成
// grails-app/controllers/demo/DemoController.groovy
package demo
class DemoController {
def index(MyCommand command) {
// command.people will be populated if the request
// includes parameters like...
// people[0].name=Jeff
// people[0].town='St. Louis'
// people[1].name='Matt'
// people[1].town='San Jose'
// ...
}
}
class MyCommand {
List<People> people
}
class People {
String name
String town
}
//grails-app/controllers/demo/DemoController.groovy
软件包演示
类控制器{
def索引(MyCommand命令){
//如果请求失败,将填充command.people
//包括参数,如。。。
//联系人[0]。姓名=Jeff
//人[0]。镇class='圣路易斯'
//人物[1]。姓名class='Matt'
//人[1]。镇上的“圣何塞”
// ...
}
}
类MyCommand{
列出人
}
阶级人士{
字符串名
弦镇
}
与编写自己的参数解析代码相比,这有很多好处。示例代码可能与我在Grails用户指南中编写的代码类似。如果您正在处理的映射是Grails应用程序中的请求参数映射,那么您有许多选项。是这样吗?@JeffScottBrown是的,我从Grails的文档中得到了这个。我有一个正在生成的对象表,我尝试在控制器的操作中使用List theListName将它们作为参数接收,但似乎不起作用。“我尝试在控制器的操作中使用List theListName将它们作为参数接收,但似乎不起作用。”—请参阅下面的“数据绑定和操作参数”小节。这描述了控制器操作参数的特殊绑定所支持的17种类型,列表不是其中之一。特殊绑定所支持的17种类型是8种原语、它们的8种类型包装对应物和java.lang.String
。示例代码看起来像是我在Grails用户指南中编写的。如果您正在处理的映射是Grails应用程序中的请求参数映射,那么您有许多选项。是这样吗?@JeffScottBrown是的,我从Grails的文档中得到了这个。我有一个正在生成的对象表,我尝试在控制器的操作中使用List theListName将它们作为参数接收,但似乎不起作用。“我尝试在控制器的操作中使用List theListName将它们作为参数接收,但似乎不起作用。”—请参阅下面的“数据绑定和操作参数”小节。这描述了控制器操作参数的特殊绑定所支持的17种类型,列表不是其中之一。特殊绑定支持的17种类型是8个原语、它们的8种类型包装对应物和java.lang.String
。请注意,根据您所做的操作,您可能可以完全跳过命令对象。这个问题没有包括足够的细节,关于你正在努力完成什么,以确定这是否与这里相关。通常,这是在创建或更新域对象的上下文中完成的,对于那些域对象,这可以变得更加简单。请注意,根据您正在执行的操作,您可能可以完全跳过命令对象。这个问题没有包括足够的细节,关于你正在努力完成什么,以确定这是否与这里相关。通常,这是在创建或更新域对象的上下文中完成的,对于那些域对象,这可以变得更加简单。