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]
答案 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]