gpt4 book ai didi

events - grails 2.2.2 platform-core-plugin 在域模型中没有方法事件的签名

转载 作者:行者123 更新时间:2023-12-02 14:25:26 24 4
gpt4 key购买 nike

我尝试了按事件提供服务的 platform-core-1.0 rc5 插件。现在我在 grails-plugin "listadmin"中编写了一个服务:

package listadmin

class SECO_ListenService {

@grails.events.Listener(topic='getEntriesOfList', namespace='listadmin')
def getEntriesOfList(String intnalListName) {
println "SECO_ListenService"
def Liste aList = Liste.findByInternal_name(intnalListName)
return aList.eintrage.toList()
}
}

该服务应返回一个名为“institutionadmin”的其他 grails 插件中的下拉列表。我想将此服务列表用于域模型的下拉列表。我应该提到我使用动态脚手架。现在我尝试在域模型中调用此事件:
package institutionadmin
import org.springframework.dao.DataIntegrityViolationException
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 reply = event(for:"listadmin", topic:"getEntriesOfList", data:"einrichtung_type").waitFor()

aList = reply.value.toList()
einrichtungs_type(inList: aList)
}
}

如果我尝试运行此应用程序,我会收到以下错误:

Caused by MissingMethodException: No signature of method: institutionadmin.Einrichtung.event() is applicable for argument types: (java.util.LinkedHashMap) values: [[for:listadmin, topic:testEventBus]] Possible solutions: ident(), every(), every(groovy.lang.Closure), count(), get(java.io.Serializable), print(java.lang.Object)



如果在 Controller 中调用这个事件一切都很好,并且这个插件的文档描述了我也可以在域模型和服务中调用事件......这个错误方法告诉我,该类不知道事件方法。

我还需要配置什么吗?

应该以其他方式调用事件还是我的错误在哪里?

有人体验过这个模块吗?

最佳答案

event(...)动态方法在类(静态)级别上不可用。

你可以拉grailsEvents Spring Bean ,调用它event()替代方法。不过,您仍然必须从应用程序上下文中静态获取 bean。

您也可以使用自定义验证器,因为您可以获得当前域实例作为参数,它应该具有 event()注入(inject)的方法。

像这样的东西:

static myList = []
static constraints = {
einrichtungs_type validator: { value, instance ->
if(!myList){
// cache it the first time you save/validate the domain
// I would probably recommend you NOT to do this here though in
// real life scenario
def reply = instance.event('blabla').get()
myList = reply.value.toList()
}

return value in myList
}
}

无论如何,在我的情况下,我可能会在其他地方加载列表(例如在 Bootstrap.groovy 中)并在我的域中使用它/注入(inject)它,而不是在约束闭包中执行。

关于events - grails 2.2.2 platform-core-plugin 在域模型中没有方法事件的签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16551275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com