2016-09-24 7 views
0

誰かがドメインオブジェクトを削除、更新、または作成する場合、新しい値でテーブルが実現されるように、新しいドメインオブジェクトをビューに送信するための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呼び出しを行う場所

ありがとうございます。

+0

スプリングソケットまたはデフォルトのWebソケットを使用できます。私はデフォルトのwebsocket jsshとboselectaを使ってデモサイトを持つプラグインをいくつか書いた。あなたの好みに応じて、彼らはあなたにアイデアを与えます。 – Vahid

答えて

0

ビューへのajax呼び出しを行う場所は?

ビューにはAjax呼び出しが行われません。 Ajax呼び出しは、クライアント(通常はWebブラウザ)によって開始されます。例えば、Webソケットのような他のテクノロジーで望む振る舞いを調整することはできますが、質問に対する答えはできません。

+0

Ok thx。私はむしろドメインクラス内のサービスメソッドを呼び出すと思います...どのようにクライアント側のjavascript関数をトリガーするには? – Moonstar

+0

"クライアント側のjavascript関数をトリガする方法は?" - サーバー上のイベントからクライアントのイベントをトリガーする場合は、Webソケットのようなテクノロジーを使用する必要があります。 –

+0

ヒントありがとうございます。 – Moonstar

関連する問題