Grails列表上的Groovy - 不工作?

时间:2009-11-18 08:56:08

标签: list grails groovy

Removing an element from a list无法正常工作,这没有任何意义。我是否缺少处理Grails域对象列表所特有的一些特殊语义?

在控制器中:

def userCreate = {
    def workgroupInstance = new Workgroup()
    workgroupInstance.manager = authUserDomain
    flash.message = User.list().toString()
    def usersWithoutThisOne = User.list() - authUserDomain
    flash.message = flash.message + "removed ${authUserDomain}, new list is ${usersWithoutThisOne}"
    return ['workgroupInstance':workgroupInstance, 'users':usersWithoutThisOne]
}

结果显示在flash.message

  

[boogie,toogie,choogie,cookie]删除了boogie,新列表是[boogie,toogie,choogie,cookie]

3 个答案:

答案 0 :(得分:4)

authUserDomain来自哪里?

如果您尚未在User上实现自定义.equals()(基于用户名或其他唯一标识),则它可能与User.list()返回的对象不同。只有在使用.equals()

匹配现有对象时,才会删除元素

答案 1 :(得分:2)

如果您打算永久删除工作组中的用户,则需要使用grails removeFrom函数来删除存储在多个关联中的类。

答案 2 :(得分:0)

我不确定这个。目前没有可用的Groovy解释器。但是IIRC和this article建议,列表上的-期望在两个列表上运行,即

list - other

实际上更像是

list.removeAll(other)

(用Java术语),而不是预期的

list.remove(other)

您可以尝试

modifiedList = originalList - [elementToRemove]