Grails 如何将属性添加到地图?

Grails 如何将属性添加到地图?,grails,groovy,Grails,Groovy,我有一个域类: class Person { String name Boolean likesGrails Boolean isSmart } 并希望在将数据传递给视图(视图将使用friend决定内容)之前预处理数据(创建新属性friend): 如何添加此friend属性?上面的代码不起作用(它抱怨it.friend不存在)。您应该可以添加: static transients = [ 'friend' ] public boolean isFriend() {

我有一个域类:

class Person {
    String name
    Boolean likesGrails
    Boolean isSmart
}
并希望在将数据传递给视图(视图将使用
friend
决定内容)之前预处理数据(创建新属性
friend
):


如何添加此
friend
属性?上面的代码不起作用(它抱怨
it.friend
不存在)。

您应该可以添加:

static transients = [ 'friend' ]
public boolean isFriend() {
  likesGrails && isSmart
}

访问您的域类,然后在您的视图中访问person.friend

您应该能够添加:

static transients = [ 'friend' ]
public boolean isFriend() {
  likesGrails && isSmart
}

到您的域类,然后访问视图中的
person.friend

如果您不想将其存储在数据库中,则可以添加一个transient

class Person {
       String name
       Boolean likesGrails
       Boolean isSmart

       Boolean friend
       static transients = [ 'friend' ]
}

但是,您不能动态地将随机属性添加到域类。

如果不希望临时属性存储在数据库中,您可以添加临时属性

class Person {
       String name
       Boolean likesGrails
       Boolean isSmart

       Boolean friend
       static transients = [ 'friend' ]
}

但是你不能在运行中向域类添加随机属性。

是否可以向groovy映射添加属性(比如说,
人不是来自hibernate,只是被定义为'def people=[…])?是的,你应该可以像你的问题中那样添加属性:-)@zoran119例如:
[[a:1,b:2],[a:3,b:4].收集{it.c=it.a+it.b;it}
是否可以将属性添加到groovy映射中(假设
people
不是来自hibernate,而是刚刚定义为'def people=[..)?是的,您应该能够像在您的问题中那样添加它:-)@zoran119例如:
[[a:1,b:2],[a:3,b:4]]。收集{it.c=it.a+it.b;