GORM持久性事件监听器

时间:2016-09-24 13:37:13

标签: ajax grails gorm

如果有人删除,更新或创建域对象,我想进行ajax调用以将新域对象发送到视图,以便使用新值实现表。我怎么能这样做?

我首先尝试创建自定义持久性事件侦听器。

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调用视图?

提前致谢。

1 个答案:

答案 0 :(得分:0)

  

在哪里调用ajax调用视图?

不对视图进行Ajax调用。 Ajax调用将由客户端(通常是Web浏览器)启动。您可以使用其他技术(例如Web套接字)协调您想要的行为,但问题的答案是您不能。