grails - Grails框架:groovy.lang.MissingMethodException:方法无签名

标签 grails groovy

当我尝试将值分配给变量“newDBName”时,出现错误:

ERROR [grails.app.controllers] groovy.lang.MissingMethodException: 
No signature of method: DataSourceConfigService.$() is applicable for 
argument types: DataSourceConfigService$_injectNewDatasource_closure1_closure3) 
values: [DataSourceConfigService$_injectNewDatasource_closure1_closure3@1e1ae104]

码:
class DataSourceConfigService {

def injectNewDatasource() {
            String newDBName = ""
            Environment.list().each {env ->
                if( !grailsApplication.mainContext.containsBean( "${env.accountName}" ) ) {

                            def bb = new BeanBuilder()
                            bb.beans {
                                  "${env.accountName}"(ComboPooledDataSource) {bean -> ...}
                                  bb.registerBeans( grailsApplication.mainContext );
                            }
                            log.info "Added bean called ${env.accountName}"

                            newDBName = ${env.accountName}
                }
            }
            return newDBName
}

}

这是我调用该函数的方式:
String newDBName = dataSourceConfigService.injectNewDatasource()

最佳答案

您在newDBName分配行上缺少引号。无论使用

newDBName = "${env.accountName}"

或只是跳过到GString的转换(至少根据此代码段看起来是不必要的),然后使用
newDBName = env.accountName

关于grails - Grails框架:groovy.lang.MissingMethodException:方法无签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54894715/

相关文章:

tomcat - 如何在grails中设置tomcat特权="true"?

Grails:如何通过过滤器中的 Controller 名称获取 Controller ?

visual-studio - 使用 Visual Studio Code 进行 Grails 开发

groovy - 如何在新行上将文本追加到文件

grails - Grails在gsp中比较2个变量

Grails 在 SecurityFilters 中使用 Spring Security

javascript - 如何从服务器保留空值? (Groovy 和 JavaScript)

java - Groovy/POI 在不同系统上返回不同迭代器

grails - 无法在 null 对象上获取属性 'config' - Grails Service Spock 测试

exception - Spock - 使用数据表测试异常