繁体   English   中英

grails 2.2.2服务不知道域模型:“无方法签名”

[英]grails 2.2.2 service don't know domain model: “No signature of method”

我有一个名为“ listadmin”的grails插件,有一个域模型“ Liste”:

package listadmin
class Liste {

    String internal_name
    String public_name

    Boolean edtiable = true
    Boolean visible = true

    static hasMany = [eintrage : ListenEintrag]
    static constraints = {
        internal_name(unique : true , blank : false);
    }
    String toString() {
        "${public_name}"
    }

}

我在同一模块(grails-plugin)中有一个名为“ SECO_ListenService”的服务:

package listadmin

class SECO_ListenService {

    def getEntriesOfList(String intnalListName) {
        def aList = Liste.findByInternal_name(intnalListName)
        return aList
    }
}

现在,我尝试从另一个名为“ institutionadmin”的模块(grails-plugin)中调用此服务。 SECO_ListenService应该返回inistitutionadmin中用于选择域模型的字符串列表:

package institutionadmin

import listadmin.SECO_ListenService

class Einrichtung {


    Long einrichtungs_type
    Long type_of_conzept
    int anzahl_gruppen
    int anzahl_kinder_pro_Gruppe
    String offnungszeiten
    static hasMany = [rooms : Raum]
    static constraints = {
        def aList  = []
        def sECO_ListenService = new SECO_ListenService()
        aList=sECO_ListenService.getEntriesOfList("einrichtung_type")
        einrichtungs_type(inList: aList)
    }
}

如果我尝试同时使用两个模块运行此应用程序。 我收到以下错误:

由MissingMethodException引起:方法没有签名:listadmin.Liste.methodMissing()适用于参数类型:()值:[]

服务类似乎不知道“ Liste”域模型。 但是我不知道错误在哪里。 我还尝试调用其他标准方法,例如“ findAll”,但没有成功。

有人知道我的错误可能在哪里吗?

为了在静态上下文中获得服务,您需要访问grailsApplication spring bean。 Holders可以做到这一点。 例:

class MyService {
  List<String> getAvailable() {
    return ['A','B','C']
  }
}

class MyDomainClass {

  String something

  static constraints = {
    something inList: getSomethingList()
  }

  static List<String> getSomethingList() {
    def myService = Holders.grailsApplication.mainContext.getBean('myService')
    return myService.getAvailable()
  }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM