다음 작업은 Grails 뷰 레이어를 완전히 우회하는 클라이언트에 직접 bytes
의 바이너리 컨텐트를 쓰는 것을 의미합니다 :Grails 뷰 레이어를 거치지 않고 바이너리 컨텐트를 클라이언트에 직접 작성하기
def actionName = {
byte[] bytes = ...
ServletOutputStream out = response.getOutputStream()
out.write(bytes)
out.flush()
out.close()
return false
}
return false
는 Grails가 뷰 레이어를 완전히 건너 뛸 것이라고 생각합니다. 그러나, 위의 코드는 여전히 Grails가 /WEB-INF/grails-app/views/controllerName/actionName.jsp
을 검색하게하므로 (이 파일이 없기 때문에 404와 함께 실패합니다) 그런 경우는 아닙니다.
- 위의 코드를 통해 Grails에서 뷰 레이어를 완전히 무시할 수 있습니까?
안녕 버트! 대답과 좋은 코드 주셔서 감사합니다. 그러나 코드는 "뷰 레이어를 완전히 우회"하지 않습니다. 내 대답은 아래를 참조하십시오. response.contentType == null이 작동하려면 왜 필요합니까? 버그 또는 기능입니까? – knorv
@Burt Beckwith는 항상 response.outputStream.flush()이거나 response.outputStream.close()도 추가해야합니까? 마지막에 null이 반환되는 것은 무엇입니까? – confile
@Burt Beckwith이 질문에 대한 아이디어가 있으십니까? http://stackoverflow.com/questions/18658021/image-byte-to-response-outputstream-in-grails-leads-to-cannot-forward-after – confile