Grails 3 - 使用特征从插件添加动态方法 - 不工作

时间:2015-07-23 15:57:17

标签: grails gorm

我只是按照用户指南使用插件中的trait向控制器添加动态方法。

以下是我的代码:

--- ---性状

package com.ylw.gorm

trait DateTrait {
Date currentDate() {
    return new Date()
}
}

--- --- TraitInjector

package com.ylw.gorm

import grails.compiler.traits.TraitInjector
import groovy.transform.CompileStatic


@CompileStatic
class ControllerTraitInjector implements TraitInjector {

@Override
Class getTrait() {
    DateTrait
}

@Override
String[] getArtefactTypes() {
    ['Controller'] as String[]
}
}

--- ---控制器

@Transactional(readOnly = true)
class MyDomainController {

static allowedMethods = [save: "POST", update: "PUT", delete: "DELETE"]

def testTrait() {
    render "The current date is -> " + currentDate()
}

...
}

我希望控制器能从特征中知道currentDate()方法。但是我在浏览器中收到以下错误:

  

由MissingMethodException引起:没有方法签名:   com.ylw.gorm.MyDomainController.currentDate()适用于   参数类型:()值:[]可能的解决方案:create()       90 | methodMissing in grails.artefact.gsp.TagLibraryInvoker $ Trait $ Helper        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -       12 | com.ylw.gorm.envers.AuditedDomainController中的$ tt__testTrait       93 | grails.transaction.GrailsTransactionTemplate $ 2中的doInTransaction       90 |在grails.transaction.GrailsTransactionTemplate中执行       1145 | java.util.concurrent.ThreadPoolExecutor中的runWorker       615 |在java.util.concurrent.ThreadPoolExecutor $ Worker中运行       745 |跑 。 。 。在java.lang.Thread

我做错了什么?

感谢您的帮助! 映亮

1 个答案:

答案 0 :(得分:3)