2016-09-24 5 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) 
    } 
} 

여기서 가장 좋은 방법은 무엇입니까? 보기로 아약스 호출을 할 위치는 어디입니까?

미리 감사드립니다.

+0

스프링 또는 기본 웹 소켓을 사용할 수 있습니다. 데모 사이트가 기본 websocket jssh와 boselecta를 사용하는 플러그인을 작성했습니다. 기본값에 대한 선호도에 따라 그들은 당신에게 아이디어를 줄 것입니다. – Vahid

답변

0

보기로 아약스 호출을해야합니까?

보기에는 Ajax 호출이 이루어지지 않습니다. Ajax 호출은 클라이언트 (일반적으로 웹 브라우저)에 의해 시작됩니다. 예를 들어 웹 소켓과 같은 다른 기술로 원하는 동작을 조율 할 수 있지만 질문에 대한 대답은 할 수 없다는 것입니다.

+0

Ok thx. 나는 오히려 도메인 클래스 내에서 서비스 메소드를 호출하고 싶습니다 ... 클라이언트 양면 자바 스크립트 함수를 트리거하는 방법? – Moonstar

+0

"클라이언트 양면 자바 스크립트 기능을 트리거하는 방법" - 서버의 이벤트에서 클라이언트의 이벤트를 트리거하려면 웹 소켓과 같은 기술을 사용해야합니다. –

+0

힌트에 감사드립니다. – Moonstar