Grails:如何编写域类的特征?

时间:2019-02-19 20:01:55

标签: grails gorm traits

我要编写几个领域类可以共享的特征。例如,我有两个域类

class Comment{

   String description

   static hasMany = [replies: CommentReply]

   String getFormattedDescription(){
        // ...
         return formattedDescription
   }
}

class CommentReply{
   String description

   Comment comment

   String getFormattedDescription(){
        // ...
         return formattedDescription
   }
}

在这种情况下,Comment和CommentReply都具有相同的函数getFormattedDescription(),可以将其移至特征并由两个域类实现。我该如何实现?

如何编写所有域类都将实现的特征?例如,默认情况下,所有域都实现了GormEntity。

1 个答案:

答案 0 :(得分:1)

一种实现方法是写出特征并用@Enhances('Domain')标记。

import grails.artefact.Enhances

@Enhances('Domain')
trait YourTraitName {
    // ...
}

这会将YourTraitName添加到所有域类。

为此,您需要在应用程序代码之前将特征配置为在其自己的源集中进行编译。一种常见的管理方法是在插件中包含特征(可以是多项目构建的一部分)。