2013-06-04 4 views
3

"를 JSON으로 렌더링"후 응답에 사용자 지정 헤더를 추가 텍스트를 입력하면 헤더가 응답에 추가됩니다. 컨트롤러에서 "render as JSON"을 사용하면 헤더가 추가되지 않습니다. JSON 변환기가 출력 스트림을 닫고 바로 전송하는 것처럼 보입니다. 그게 맞습니까?내가 Grails의 필터를 사용하여 컨트롤러의 특정 세트의 응답에 사용자 지정 HTTP 헤더를 추가하려고

Grails 인터셉터를 사용할 수는 있지만 하나 이상의 컨트롤러에서 복제해야합니다. 어떻게이 작업을 수행 할 수 있습니까?

대신 행동의 필터에 JSON으로 모델에서 번역을 할 수
+0

부팅시 컨트롤러 (Bootstrap.groovy). –

+0

그럴 수 있습니다. 나는 또한 요격기를 가진 기본 컨트롤러를 가지고 있고 그로부터 연장한다고 생각한다. 감사. – chozero

답변

4

:

컨트롤러 :

class myController { 
    def myAction() { 
     [aThing: 1, anotherThing: [a: 1, b: 2]] 
    } 
} 

필터 : 당신은 동적으로 모든으로는 afterInterceptor를 추가 할 수

class ApiFilters { 
    def filters = { 
     xwingFilter(uri:'/api/**') { 
      after = { model -> 
       response.setHeader('X-Wing', 'foo') 
       render model as JSON 
       return false // prevent normal view from rendering 
      } 
     } 
    } 
}