誰かがドメインオブジェクトを削除、更新、または作成する場合、新しい値でテーブルが実現されるように、新しいドメインオブジェクトをビューに送信するためのajax呼び出しを行いたいと考えました。どうやってやるの?GORM永続イベントリスナー
まず、カスタム永続イベントリスナーを作成しようとしました。その後
public class MyCustomPersistenceListener
extends AbstractPersistenceEventListener {
protected MyCustomPersistenceListener(Datastore datastore) {
super(datastore)
}
@Override
protected void onPersistenceEvent(AbstractPersistenceEvent event) {
switch (event.eventType.toString()) {
case "PreInsert":
println "PRE INSERT ${event.entityObject}"
break
case "PostInsert":
println "POST INSERT ${event.entityObject}"
break
case "PreUpdate":
println "PRE UPDATE ${event.entityObject}"
break;
case "PostUpdate":
println "POST UPDATE ${event.entityObject}"
break;
case "PreDelete":
println "PRE DELETE ${event.entityObject}"
break;
case "PostDelete":
println "POST DELETE ${event.entityObject}"
break;
case "PreLoad":
println "PRE LOAD ${event.entityObject}"
break;
case "PostLoad":
println "POST LOAD ${event.entityObject}"
break;
}
//println "${event.eventType}"
}
@Override
boolean supportsEventType(Class<? extends ApplicationEvent> aClass) {
return true
}
}
Bootstrap.groovyで私は、Grailsのアプリケーションコンテキストに自分のアプリケーションのリスナーを追加しました。
def grailsApplication
def init = { servletContext ->
def applicationContext = grailsApplication.mainContext
grailsApplication.mainContext.eventTriggeringInterceptor.datastores.each { k, datastore ->
applicationContext.addApplicationListener new MyCustomPersistenceListener(datastore)
}
}
ここで最善の方法は何ですか?ビューへのajax呼び出しを行う場所
ありがとうございます。
スプリングソケットまたはデフォルトのWebソケットを使用できます。私はデフォルトのwebsocket jsshとboselectaを使ってデモサイトを持つプラグインをいくつか書いた。あなたの好みに応じて、彼らはあなたにアイデアを与えます。 – Vahid